Преобразование строки в число и наоборот в C ++
В общем или, более конкретно, в соревновательном программировании есть много случаев, когда нам нужно преобразовать число в строку или строку в число. Но к этому нас обязывает незнание некоторых основных инструментов. Некоторые методы решения этой задачи упомянуты в этой статье.
Преобразование строки в число
Метод 1. Использование класса stringstream или sscanf ()
Метод 2 : преобразование строк с использованием stoi () или atoi ()
Оба эти метода подробно обсуждались в этой статье.
Метод 3: использование усиленного лексического приведения
Библиотека Boost предлагает встроенную функцию «lexical_cast (« string »)», которая напрямую преобразует строку в число. Он возвращает исключение «bad_lexical_cast» в случае неверного ввода.
//C++ code to demonstrate working of lexical_cast() #include<iostream> #include <boost/lexical_cast.hpp>// for lexical_cast() #include <string> // for string using namespace std; int main() { string str = "5" ; string str1 = "6.5" ; // Initializing f_value with casted float // f_value is 6.5 float f_value = boost::lexical_cast< float >(str1); // Initializing i_value with casted int // i_value is 5 int i_value = boost::lexical_cast< int >(str); //Displaying casted values cout << "The float value after casting is : " ; cout << f_value <<endl; cout << "The int value after casting is : " ; cout << i_value <<endl; return 0; } |
Выход:
The float value after casting is : 6.5 The int value after casting is : 5
Преобразование числа в строку
Метод 1: использование строковых потоков
В этом методе строковый поток объявляет объект потока, который сначала вставляет число в виде потока в объект, а затем использует «str ()» для внутреннего преобразования числа в строку.
// C++ code to demonstrate string stream method // to convert number to string. #include<iostream> #include <sstream> // for string streams #include <string> // for string using namespace std; int main() { int num = 2016; // declaring output string stream ostringstream str1; // Sending a number as a stream into output // string str1 << num; // the str() coverts number into string string geek = str1.str(); // Displaying the string cout << "The newly formed string from number is : " ; cout << geek << endl; return 0; } |
Выход:
Вновь сформированная строка из числа: 2016
Метод 2: использование to_string ()
Эта функция принимает число (может быть любым типом данных) и возвращает число в желаемой строке.
Реализация:
// C++ code to demonstrate "to_string()" method // to convert number to string. #include<iostream> #include<string> // for string and to_string() using namespace std; int main() { // Declaring integer int i_val = 20; // Declaring float float f_val = 30.50; // Conversion of int into string using // to_string() string stri = to_string(i_val); // Conversion of float into string using // to_string() string strf = to_string(f_val); // Displaying the converted strings cout << "The integer in string is : " ; cout << stri << endl; cout << "The float in string is : " ; cout << strf << endl; return 0; } |
Выход:
Целое число в строке: 20 Число с плавающей запятой в строке: 30,500000
Метод 3: использование усиленного лексического приведения
Подобно преобразованию строк, функция «lexical_cast ()» остается той же, но на этот раз список аргументов изменяется на «lexical_cast (numeric_var)».
// C++ code to demonstrate "lexical_cast()" method // to convert number to string. #include <boost/lexical_cast.hpp> // for lexical_cast() #include <string> // for string using namespace std; int main() { // Declaring float float f_val = 10.5; // Declaring int int i_val = 17; // lexical_cast() converts a float into string string strf = boost::lexical_cast<string>(f_val); // lexical_cast() converts a int into string string stri = boost::lexical_cast<string>(i_val); // Displaying string converted numbers cout << "The float value in string is : " ; cout << strf << endl; cout << "The int value in string is : " ; cout << stri << endl; return 0; } |
Выход:
Значение с плавающей запятой в строке: 10,5 Значение int в строке: 17
Эта статья предоставлена Манджитом Сингхом . Если вам нравится GeeksforGeeks, и вы хотели бы внести свой вклад, вы также можете написать статью с помощью provide.geeksforgeeks.org или отправить ее по электронной почте на deposit@geeksforgeeks.org. Посмотрите, как ваша статья появляется на главной странице GeeksforGeeks, и помогите другим гикам.
Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по теме, обсужденной выше.