примечание: я оставил заявление на просто «с = GetChar()», чтобы позволить ему быть более универсальным. В реальном коде я бы сравнил результат этого с чем-то другим, например с EOF или новой линией.
Ум, то есть нет общий. Если это универсальная версия чего-либо, она в общем выражает общую ошибку. Все программное обеспечение должно обрабатывать условие EOF в любом месте.
В C++ мы используем потоковые буферы, которые сравниваются с истинными или ложными значениями в зависимости от успеха. Нет необходимости использовать EOF в качестве значения фальшивого потока, хотя вы можете это сделать.
идиома (без ошибка) будет
while (std::cin.get(c))
Если вы хотите, чтобы потреблять до следующего символа новой строки и разобрать одну строку на итерации, без требования, чтобы закончить файл с пустой строкой, а затем использовать
std::string s;
while (getline(std::cin, s)) {
std::istringstream line(s);
Затем вы можете извлекать предметы, используя line >> x
.
'while (std :: cin >> c)'. – Rapptz
@Rapptz: вы забыли 'std :: cin >> std :: noskipws' –
@MooingDuck Упс, да. – Rapptz