Навязший уже на устах вопрос на собеседованиях – как на крестах целое число перевести в строку. Многие начинают вспоминать старые добрые 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
верно – все течет, все меняется 🙂