Функции преобразования строк С++

Функции преобразования строкОбычно строку, при разработке приложения, преобразуют в числа, такие как целое и двойное число.

В этой статье мы рассмотрим функции, которые можно использовать для эффективного преобразования строк в int & double и числовых значений в строку.

Функции преобразования строк

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

В данной статье мы обсудим различные функции для преобразования объекта std::string в числовые типы данных, включая integer и double.

Преобразование строки в числовые типы

Как правило, в C++ существует два распространенных метода преобразования строк в числа:

  1. Использование функций stoi и atoi, которые реплицируются для всех числовых типов данных.
  2. Использование класса stringstream.

Остановимся подробно на каждом способе.

Использование функций stoi и atoi

Класс std::string поддерживает различные функции для преобразования строки в integer, long, double, float и т. д. Функции преобразования, поддерживаемые std::string, сведены в таблицу следующим образом:

Функция Описание
stoi
stol
stoll
Преобразует строку в целое число (включая типы long и long long).
atoi
atol
atoll
Преобразует строку байтов в целое число (включая тип long и long long).
stod
stof
stold
Преобразует строку байтов в значения с плавающей запятой (включая типы float, double и long double).
stoul
stoull
Преобразует строку байтов в целое число без знака (включая типы unsigned long и unsigned long long).

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

Преобразование строки в int и использование stoi() и atoi()

stoi()

Прототип функции: stoi(const std::string& str, std::size_t* pos = 0, int base = 10);

Параметры:
str=> Строка для преобразования
pos=> Адрес целого числа для хранения количества обработанных символов; по умолчанию = 0
base=> Основание счисления; default=0

Читать также:  Массивы C++ с примерами

Возвращаемое значение: Целое число, эквивалентное указанной строке.

Исключения: std::invalid_argument=>Если невозможно выполнить преобразование.
Std::out_of_range=>Если преобразованное значение выходит за пределы диапазона типа результата.

Описание: Функция stoi() принимает в качестве аргумента строку и возвращает целочисленное значение. Она выдаст исключение, если преобразованное значение выходит за пределы допустимого диапазона или если преобразование невозможно выполнить.

Давайте пример программирования для лучшего понимания работы функции:

Вывод данных:

stoi(“53”) is 53
stoi(“3.142”) is 3
stoi(“31477 with char”) is 31477

В приведенной выше программе мы использовали функцию stoi с тремя разными строками. Обратите внимание, что при преобразовании строковых данных в целочисленное значение функция отбрасывает пробелы или любые другие символы.

Следовательно, в случае mystr2 (3.142) функция отбрасывала все после запятой. Аналогично, в случае с mystr3 («31477 с char») учитывалось только число. Остальное содержимое строки было отброшено.

atoi()

Прототип функции: int atoi(const char *str);

Параметры: str=> Указатель на строку байтов, оканчивающуюся нулем.

Возвращаемое значение:
Success=> целочисленное значение, соответствующее аргументу str.
Ошибка => Не определено, если преобразованное значение выходит за пределы допустимого диапазона.
0=> Если преобразование невозможно.

Описание: Эта функция преобразует строку байтов в целочисленное значение. Функция atoi() отбрасывает любые пробелы до тех пор, пока не встретится символ, не являющийся пробелом, а затем берет символы один за другим для формирования допустимого представления целого числа и преобразует его в целое число.

Пример работы функции atoi:

Вывод данных:

atoi(“24”) is 24
atoi(“3.142”) is 3
atoi(“23446 with char”) is 23446
atoi(“words with 3”) is 0

Как показано в приведенной выше программе, функция atoi принимает в качестве аргумента строку байтов и преобразует ее в целочисленное значение. Пробелы или любые другие символы отбрасываются. Если преобразованное значение выходит за пределы допустимого диапазона, возвращается 0.

Читать также:  Обработка переменных в языке программирования Паскаль

Строка для удвоения stod()

Прототип функции: stod(const std::string& str, std::size_t* pos = 0);

Параметры:
str=> Строка для преобразования
pos=> Адрес целого числа для хранения количества обработанных символов; по умолчанию = 0

Возвращаемое значение: двойное значение, эквивалентное указанной строке.

Исключения:
std::invalid_argument=>Если невозможно выполнить преобразование.
std::out_of_range=>Если преобразованное значение выходит за пределы диапазона типа результата.

Описание: Эта функция преобразует строку в значение с плавающей запятой. Функция stod() отбрасывает любые пробелы до тех пор, пока не встретится символ, не являющийся пробелом, а затем берет символы один за другим, чтобы сформировать допустимое представление числа с плавающей запятой, и преобразует его в число с плавающей запятой.

Вот пример, демонстрирующий эту функцию:

Вывод данных:

stod(“24”) is 24
stod(“3.142”) is 3.142
stod(“23446 with char”) is 23446

Вышеприведенная программа демонстрирует использование функции «stod». Выходные данные показывают преобразованные двойные значения указанных строк.

Использование класса stringstream

Использование класса stringstream — это самый простой способ преобразовать строковые значения в числовые значения.

Ниже приведена программа, которая демонстрирует преобразование строки в числовое значение:

Вывод данных:

Value of num : 2508
Value of dNum : 3.142

В приведенной выше программе видно, что мы объявили строковый объект. Затем мы объявляем объект stringstream и передаем строку этому объекту, чтобы строка была преобразована в объект stringstream. Затем этот объект stringstream передается в целочисленное значение с помощью оператора ‘>>’, который преобразует объект stringstream в целое число.

Точно так же мы преобразовали строку в двойную. Итак, пока оператор «>>» поддерживает тип данных, мы можем преобразовать строку в любой тип данных, используя объект stringstream.

Преобразование int в строку

Мы также можем преобразовать числовые значения в строковые значения. Существует два метода преобразования числовых значений в строковые, мы обсудим их ниже.

Использование функции to_string()

Прототип функции: std::string to_string(type value);

Параметры: value=> Числовое значение для преобразования

Читать также:  Списки инициализаторов в C++

Возвращаемое значение: Строковое значение, содержащее преобразованное значение.

Исключение: может выдать std::bad_alloc

Описание: Эта функция to_string() преобразует числовое значение, переданное в качестве аргумента, в строковый тип и возвращает строку.

Давайте посмотрим на пример этой функции:

Вывод данных:

The string representation of integer : 20
The string representation of float : 30.500000

Здесь у нас есть две переменные, каждая из которых имеет тип integer и float. Затем мы дважды вызываем метод to_string с целочисленным аргументом и аргументом с плавающей запятой и конвертируем оба значения в строковые значения. Наконец, мы отображаем преобразованные значения.

Обратите внимание, что преобразование значения с плавающей запятой в строку может привести к неожиданным результатам, поскольку количество значащих цифр может быть равно нулю из-за метода to_string.

Использование класса stringstream

Использование класса stringstream начинается с объявления объекта потока, который вставляет числовое значение в виде потока в объект. Затем он использует функцию «str()» для внутреннего преобразования числового значения в строку.

Пример:

Вывод данных:

The string formed from integer is: 26082019
The string formed from double is: 3.142

В этом листинге мы определили целое число и двойное значение. Затем у нас есть объект ostringstream, с помощью которого мы преобразуем числовое значение в объект stringstream. Для этого используется оператор ‘<<‘. Затем мы используем метод str() для объекта stringstream, чтобы преобразовать его в строку.

Итог

В этой статье мы обсудили функции преобразования, которые преобразуют строку в числовые типы и числовые типы обратно в строку. Мы подробно рассмотрели функции и примеры функций stoi(), stod(), atoi(), to_string(). Мы также обсудили некоторые функции и методы класса stringstream, которые помогают нам выполнять упомянутые преобразования.

В следующей статье мы рассмотрим функции преобразования символов в C++, такие как преобразование символа в целое число или строки и массива символов в строку, с примерами кода.

С Уважением, МониторБанк

Добавить комментарий