Циклы while
должны выглядеть следующим образом:
std::string line;
while (std::getline(file, line))
{
std::istringstream iss(line);
std::string token;
while (iss >> token)
{
cout << "Substring: " << token << endl;
}
}
Операции getline
и input возвращают объект потока, который сам по себе имеет специальное преобразование в bool, указывающее, была ли операция выполнена успешно, и она завершится ошибкой точно, когда вы достигнете конца соответствующего потока.