Можно ли читать из 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');
    }
→ Ссылка