istringstream: преобразование строк в поток данных в C++
istringstream - это класс из стандартной библиотеки C++, который представляет собой поток ввода, работающий с строками. Он позволяет конвертировать строку в другой тип данных, например, в число или вектор.
Для работы с istringstream сначала нужно создать объект этого класса, передав в конструктор строку, которую нужно разобрать на отдельные элементы:
#include
#include
using namespace std;
int main()
{
string str = "12.34 56.78 90.12";
istringstream iss(str);
}
После этого мы можем применять методы объекта istringstream для чтения данных из строки. Например, для чтения первого элемента мы можем использовать метод `>>`, который работает так же, как и для обычного потока ввода в cin:
double x;
iss >> x;
Теперь переменная x будет содержать число 12.34.
Если нужно прочитать несколько элементов, можно использовать цикл:
while (iss >> x)
{
// код для обработки каждого значения
}
В этом цикле мы будем проходить по строке, пока не закончатся элементы. Каждый новый элемент будет присваиваться переменной x, и на каждой итерации мы можем обрабатывать его, например, добавлять в массив или производить какие-то вычисления.
Пример: давайте напишем программу, которая на вход получает строку с числами и находит их среднее арифметическое.
#include
#include
#include
using namespace std;
int main()
{
string str = "12 23 34 45.6 56.7";
istringstream iss(str);
double sum = 0;
double x;
int count = 0;
while (iss >> x)
{
sum += x;
count++;
}
double avg = sum / count;
cout << "Average: " << avg << endl;
return 0;
}
Здесь мы создаем объект istringstream на основе строки "12 23 34 45.6 56.7", далее в цикле проходим по всем элементам, складываем их и считаем количество элементов. Затем находим среднее арифметическое и выводим его на экран.
В итоге, istringstream - полезный класс для работы с текстовыми данными, который позволяет удобно конвертировать строки в нужные типы данных и обрабатывать их.