Можно ли читать из ifstream в stringstream?
Задача такая: надо прочитать из файла построчно, и при этом каждую строку читать пословно. Конечно, есть весьма логичная реализация:
ifstream readen;
...
stringstream ss;
string line;
string sline;
// читаем построчно
while(getline(readen, line)) {
ss << line; // помещаем строку в stringstream
ss >> sline; // читаем уже по словам
}
А можно ли из файла строку сразу прочитать в stringstream, минуя строку line?
Ответы (2 шт):
Автор решения: HolyBlackCat
→ Ссылка
Можно мувнуть строку:
while (std::getline(readen, line))
{
std::istringstream ss(std::move(line));
ss >> ...
}
Можно у уже готового stringstream подменить строку вызовом .str(std::move(line)), но без мануала я не помню, надо ли при этом сбрасывать еще какое-то состояние потока.
Автор решения: Harry
→ Ссылка
Итак...
R: мне просто надо прочитать по n-ному слову из каждой строки
H: Его наличие в строке гарантируется? Ну, что строка не может быть из n-2 слов, например? :)
R: в моём случае гарантируется...
Ну, тогда...
string word; int i = n;
while(i == n)
for(i = 0; i < n && readen >> s; ++i)
{
cout << "n-th word is: " << s << endl;
readen.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}