Класс istringstream
Класс istringstream из заголовка <sstream> позволяет
читать данные из строки так же, как мы читаем их из
потока ввода cin. Это удобно, когда нужно разобрать
строку на отдельные числа, слова или другие значения.
В конструктор класса мы передаем строку, из которой
будет происходить чтение, а дальше работаем с объектом
как с обычным потоком ввода: используем оператор >>
или функцию getline.
Синтаксис
istringstream name(string);
Пример
Давайте разберем строку "12345" на отдельные числа
и выведем каждое из них:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
istringstream iss("12345");
int num;
while (iss >> num) {
cout << num << endl;
}
return 0;
}
Результат выполнения кода:
12345
Пример
Давайте разберем строку "abcde" на отдельные слова,
разделенные пробелами:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
istringstream iss("abcde");
string word;
while (iss >> word) {
cout << word << endl;
}
return 0;
}
Результат выполнения кода:
"abcde"
Пример
Давайте прочитаем из строки два значения - число и слово:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
istringstream iss("12345 abcde");
int num;
string word;
iss >> num;
iss >> word;
cout << num << endl;
cout << word << endl;
return 0;
}
Результат выполнения кода:
12345
"abcde"
Пример
Давайте прочитаем из строки целую строку с помощью
функции getline:
#include <iostream>
#include <sstream>
#include <string>
using namespace std;
int main()
{
istringstream iss("abcde");
string line;
getline(iss, line);
cout << line << endl;
return 0;
}
Результат выполнения кода:
"abcde"
Смотрите также
-
класс
ostringstream,
который позволяет записывать данные в строку -
класс
stringstream,
который позволяет читать и записывать данные в строку -
функция
getline,
которая читает строку из потока ввода -
функция
to_string,
которая преобразует число в строку