Первая проблема: приведенный выше код не останавливается в конце строки.
Оператор >> () игнорирует " Символы пробела ", которые включают символ новой строки.
Как это можно написать лучше?
Трудно сказать, не зная, что вы пытаетесь сделать с числами и каков формат ввода файла!
Но если бы я писал это, я написал бы это без использования этих строк:
if (in.eof())
break;
in.clear();
in.seekg(1, ios::cur);
При обработке форматированного текстового файла редко можно увидеть использование seek ().
Assumign:
Файл содержит только цифры.
Вы хотите прочитать все числа в контейнер.
std::vector<int> data;
std::copy( std::istream_iterator<int>(in), // An iterator from current point
std::istream_iterator<int>(), // To end of file.
std::inserter(data) // Destination (insert into data)
);