Навязший уже на устах вопрос на собеседованиях – как на крестах целое число перевести в строку. Многие начинают вспоминать старые добрые sprintf, itoa. Cпору нет, с некоторыми оговорками их вполне можно использовать для представления целых и не очень чисел в виде массива символов. Но если мы говорим о c++ (именно что си с плюсами) – есть более удобное и универсальное решение.
Стандартная библиотека содержит незаслужено малоизвестный класс – ostringstream. Он предоставляет удобный интерфейс потоков ввода-вывода и прекрасно пережевывает все встроенные типы данных. Результирующую строку легко получить с помощью метода str();
Небольшой пример демонстрирующий возможности класса ostringstream для преобразования целых и дробных чисел в обычную std:string.
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
float v1 = 34.5691;
string s1 = "std:string example";
char c1[] = "pure c array";
int i1 = 25;
ostringstream out;
out<<"float - " << v1 <<endl << "this is s1 - "<<s1<<endl;
out << "char[] - "<<c1<<endl <<"ordinary int - " <<i1<<endl;
cout << out.str() << endl;
return 0;
}
4 comments
Skip to comment form
Тема не соответствует примеру. Я искал как переменную преобразовать
ostringstream –>>> string
int example = 228;
std::ostringstream oss;
oss << example;
string temp = oss.str();
А можно воспользоваться готовой функцией из stl – std::to_string
Author
верно – все течет, все меняется 🙂