Строки C++: преобразование строки в число.

Еще одна задача, которая часто встречается на форумах — это вопрос по преобразованию строки в число. И не важно какого типа число: int, float, или другого. Важен сам факт преобразования, сама технология.

На самом деле если особо не забивать голову замарочками, типа «функция atoi не всегда работает корректно (что я проверил на практике, но не искал причины)», то вопрос решается очень легко.

Чтоб не тянуть я сразу приведу 2 функции преобразования строки в число типа int. Вы можете просто изменить тип данных и получите float, double…

Для начала нужно подключить заголовочный файл sstream

….

….

Так всё легко и просто. А для удобства я бы порекомендовал вынести все функции преобразования строк в отдельный класс и работать с ним.

Строки C++: поиск подстроки в строке на cpp

К сожалению во все времена камнем преткновения для многих начинающих c++ программистов была работа со строками. Была, есть и, даже после чтения десятков статей подобного содержания, будет.

В данном посте я рассматриваю вопрос поиска подстроки в строке. Данный вопрос миллионы раз рассматривался, обсуждался и «переваривался» на форумах, сайтах, блогах, на русском, английском, французском (…) языках людьми всех возрастов, вероисповеданий, расс… Я тоже хочу ответить на вопрос: «как найти подстроку в строке

В данном случае мы рассмотрим самый простой вариант — это поиск подстроки в строке типа string. Здесь задача решается одной функцией в 14 строк. Сразу приведу функцию, которую я накидал:

Рассмотрим каждый момент отдельно.

Для поиска подстрок запускаем бесконечный цикл. Это делается т.к. мы не знаем точно сколько вхождений будет. А если бы знали, то и алгоритм нам не нужен был бы.

Первым же делом ищем вхождение подстроки в строку. Результат — позиция первого символа подстроки в строке. Т. к. искать начинаем с начала строки, то значение start = 0.

Итак, если мы нашли хот одно вхождение, то увеличиваем позицию для начала старта. Приведенная мною формула экономит процессорное время, т.к. пропускает найденную подстроку, и программа в этой части поиск уже не производит.

Также мы увеличиваем значение счетчика. И всё! В конце выводим значение счетчика.

В следующем посте я приведу НЕСКОЛЬКО быстрых алгоритмов поиска подстроки в строках типа char*.

Boost split — разбиваем строку

Никогда не приходилось писать на C++. Но тут решил поэкспериментировать. Задача №1 — написать программу, которая будет напрямую обращаться к postfix. Не буду писать, зачем мне это нужно. Я думаю всем и так понятно (о спаме речи быть не может. просто большое количество писем). Так как я это уже реализовывал на C++, то мне нужно было лишь немного изменить код и программа готова. Но вот проклятие всех программистов на C — работа со строками. То, что на php или Java со строкой можно сделать, приложив минимум усилий, то же самое на Си требует десятки строк кода, а иногда и создания целых библиотек классов 🙂

На этом и уткнулся я со своей задачей №2 — выгруженный в csv файл список клиентов разбить по полям ИМЯ-ФАМИЛИЯ-ОТЧЕСТВО-EMAIL.

Проделав множество махинаций с кодом на языке, который и без того я считал очень сложным, убедился в том, что C++ так просто мне не поддастся. Пришлось идти на хитрость. Поискав в интернете ответ на мой вопрос только на 4 странице поисковика я вышел на рабочий пример разбивки строки по определенному делителю. Как оказалость, данный функционал давно реализован в Boost.

Достаточно предисловия… перейдем сразу к делу. Необходимая нам функция описана в файле


Шаблон

А вот готовый рабочий пример:

Надеюсь приведенный пример поможет многим сэкономить время.