В этой статье мы узнаем, как мы можем преобразовать число с плавающей запятой в строку на C++, используя различные методы:
- Использование to_string()
- Использование строкового потока
- Использование макросов
- Использование lexical_cast из библиотеки boost
1. Использование to_string()
Метод to_string() принимает одну целочисленную переменную или другой тип данных и преобразует ее в строку.
Синтаксис:
string to_string (float value);
Пример:
С++
#include <bits/stdc++.h>
using
namespace
std;
int
main() {
float
x=5.5;
string resultant;
resultant=to_string(x);
cout <<
"Converted value from float to String using to_string() is : "
<<resultant<<endl;
return
0;
}
Выход
Converted value from float to String using to_string() is : 5.500000
Объяснение: Функция to_string преобразует заданное значение с плавающей запятой в строку.
2. Использование строкового потока
Строковый поток связывает строковый объект с потоком, позволяя вам читать из строки, как если бы это был поток (например, cin). Чтобы использовать stringstream, нам нужно подключить заголовочный файл sstream. Класс stringstream чрезвычайно полезен при разборе входных данных. Основные методы:
- clear() — очистить поток.
- str() — для получения и установки строкового объекта, содержимое которого присутствует в потоке.
- operator << — Добавить строку в объект stringstream.
- operator >> — Чтение чего-либо из объекта stringstream.
Пример:
С++
#include <bits/stdc++.h>
using
namespace
std;
int
main() {
float
x=5.5;
stringstream s;
s<<x;
// appending the float value to the streamclass
string result=s.str();
//converting the float value to string
cout <<
"Converted value from float to String using stringstream is : "
<<result<<endl;
return
0;
}
Выход
Converted value from float to String using stringstream is : 5.5
Объяснение: Класс stringstream преобразует значение с плавающей запятой из переменной в строку. Это встроенный класс, присутствующий в библиотеке C++.
3. Использование макросов
Этот метод применяется исключительно к преобразованию с плавающей запятой. ‘#’ используется макросом STRING для преобразования значений с плавающей запятой в String.
Синтаксис:
#define STRING(Value) #Value string gfg(STRING(Float_value));
Пример:
С++
#include <bits/stdc++.h>
#include <string>
using
namespace
std;
//using macro to convert float to string
#define STRING(Value) #Value
int
main() {
string gfg(STRING(5.5));
if
(gfg.empty()) cout <<
"The String is empty"
<<endl ;
else
cout << gfg << endl;
return
EXIT_SUCCESS;
}
Выход
5,5
4. Использование lexical_cast
Boost.LexicalCast, который определен в библиотеке «boost/lexical_cast.hpp», предоставляет оператор приведения, boost::lexical_cast, который может преобразовывать числа из строк в числовые типы, такие как int или double, и наоборот. boost::lexical_cast — это альтернатива таким функциям, как std::stoi(), std::stod() и std::to_string(), которые были добавлены в стандартную библиотеку в C++11.
Синтаксис:
float x= 5.5; string res = lexical_cast<string>(x);
Пример:
С++
#include "boost/lexical_cast.hpp"
#include <bits/stdc++.h>
using
namespace
std;
using
boost::lexical_cast;
using
boost::bad_lexical_cast;
int
main() {
// Float to string conversion
float
x= 5.5;
string res = lexical_cast<string>(x);
cout << res << endl;
return
0;
}
Выход:
5,5