Класс stringstream
Класс stringstream из заголовочного файла <sstream>
представляет собой строковый поток, который объединяет
возможности классов istringstream и ostringstream.
Он позволяет одновременно записывать данные в поток (как
cout) и читать их из потока (как cin), используя
при этом строку в качестве источника и приёмника данных.
Это делает stringstream удобным инструментом для
форматирования, разбора и преобразования строк.
Конструктор класса может принимать необязательную строку,
которая станет начальным содержимым потока. Метод str
позволяет получить текущее содержимое потока в виде строки
или задать новое. Операторы << и >> работают
с потоком так же, как и с другими потоками ввода-вывода.
Синтаксис
#include <sstream>
stringstream ss;
stringstream ss(string str);
Пример
Давайте запишем в поток несколько значений и получим
итоговую строку с помощью метода str:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
stringstream ss;
ss << "abc" << " " << 123 << " " << 45;
string res = ss.str();
cout << res << endl;
return 0;
}
Результат выполнения кода:
"abc 123 45"
Пример
Давайте разберём строку на отдельные числа с помощью
оператора >>:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
stringstream ss("12345");
int a, b;
ss >> a >> b;
cout << a << " " << b << endl;
return 0;
}
Результат выполнения кода:
12 345
Пример
Давайте преобразуем число в строку и обратно, используя
stringstream:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
int num = 12345;
stringstream ss;
ss << num;
string str = ss.str();
cout << str << endl;
stringstream ss2(str);
int res;
ss2 >> res;
cout << res << endl;
return 0;
}
Результат выполнения кода:
12345
12345
Смотрите также
-
класс
ostringstream,
который предназначен только для записи в строку -
класс
istringstream,
который предназначен только для чтения из строки -
метод
str,
который возвращает содержимое потока в виде строки -
функция
to_string,
которая преобразует число в строку