Я бы хотел, чтобы моя программа читала от stdin до EOF, печатала все входные данные и повторяла. Я попытался очищая состояние EOF из стандартного ввода следующим образом:Повторное чтение в EOF от stdin
#include <string>
#include <iostream>
#include <iterator>
using namespace std;
int main() {
cin >> noskipws;
while (1) {
printf("Begin");
istream_iterator<char> iterator(cin);
istream_iterator<char> end;
string input(iterator, end);
cout << input << endl;
cin.clear();
}
}
После того, как первый вход принимается и печатается, однако, программа просто бесконечно печатает «Begin», не дожидаясь дальнейшего ввода.
Как продолжить чтение EOF? Когда данных больше нет, * данных больше нет. * –
@JonathonReinhart EOF не обязательно означает, что больше никогда не будет данных, только чтобы достигнут конец файла. Терминал может поддерживать ввод данных после того, как пользователь входит в EOF escape, и файл может иметь больше данных, записанных на него. – hobbs
@hobbs Я это понимаю. Я действительно рассмотрел то, о чем вы упоминали, но не мог придумать какую-либо стандартную программу UNIX-y, которая продолжает читать, после того, как EOF получит от stdin. Если я нажму Ctrl + D, я ожидаю, что он закончит. –