«

»

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;
}

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>