我希望我的程序从标准输入读取,直到EOF,打印所有输入,然后重复。我试图清除标准输入的EOF状态如下:从stdin反复读取EOF
#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();
}
}
第一输入被接收,并且打印后,然而,该方案只是无限打印“开始”,而无需等待进一步的输入。
如何继续阅读过去的EOF?一旦没有更多的数据,*没有更多的数据。* –
@JonathonReinhart EOF并不一定意味着永远不会有更多的数据,只有到达文件结尾。用户进入EOF转义后,终端可以继续提供输入,并且文件可以写入更多的数据。 – hobbs
@hobbs我明白这一点。我实际上已经考虑了你提到的内容,但是想不到任何标准的UNIX-y程序在它从stdin获取EOF后继续尝试读取。如果我按Ctrl + D,我期望它完成。 –