Класс ostringstream
Класс ostringstream из заголовка sstream представляет собой поток вывода, который записывает данные не на экран или в файл, а в обычную строку. Это позволяет использовать все возможности форматирования, доступные для cout (например, setw, setprecision, hex, fixed), и при этом получать результат в виде объекта string. Чтобы получить накопленную строку, используется метод str. Класс удобен для сборки сложных строк из разнородных данных без применения операций конкатенации.
Синтаксис
#include <sstream>
ostringstream os;
os << value1 << value2;
string res = os.str();
Пример
Давайте запишем в поток числа и строку, а затем получим результат:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
ostringstream os;
os << "abcde" << " " << 12345;
string res = os.str();
cout << res << endl;
return 0;
}
Результат выполнения кода:
"abcde 12345"
Пример
Давайте используем манипуляторы форматирования setw и setfill для выравнивания чисел в строке:
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
ostringstream os;
os << setfill('0');
os << setw(5) << 12 << endl;
os << setw(5) << 345 << endl;
string res = os.str();
cout << res;
return 0;
}
Результат выполнения кода:
""00012"
00345
"""
Пример
Давайте выведем число в шестнадцатеричном виде с помощью манипулятора hex:
#include <iostream>
#include <sstream>
#include <iomanip>
#include <string>
using namespace std;
int main()
{
ostringstream os;
os << hex << 255;
string res = os.str();
cout << res << endl;
return 0;
}
Результат выполнения кода:
"ff"
Смотрите также
-
класс
stringstream,
который объединяет ввод и вывод в строку -
класс
istringstream,
который читает данные из строки -
метод
str,
который возвращает содержимое потока в виде строки -
функция
to_string,
которая преобразует число в строку