Преобразование строки в число и наоборот в C ++

Опубликовано: 1 Января, 2022

В общем или, более конкретно, в соревновательном программировании есть много случаев, когда нам нужно преобразовать число в строку или строку в число. Но к этому нас обязывает незнание некоторых основных инструментов. Некоторые методы решения этой задачи упомянуты в этой статье.

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

Метод 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, и помогите другим гикам.

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

Хотите узнать о лучших видео и практических задачах, ознакомьтесь с базовым курсом C ++ для базового и продвинутого уровня C ++ и курсом C ++ STL для базового уровня плюс STL. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
C++ C