Aug 06

ostringstream – как на c++ число в строку перевести

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

1 comment

    • Чих Пых on May 24, 2018 at 8:44 pm
    • Reply

    Тема не соответствует примеру. Я искал как переменную преобразовать
    ostringstream –>>> string

Leave a Reply

Your email address will not be published.