C++中当用命令行CTRL+Z+Enter模拟EOF后还想继续输入的探索

来源:互联网 发布:纳什职业生涯数据 编辑:程序博客网 时间:2024/04/29 08:24
当达到文件尾部EOF(End of File)时,c++会置位ios::failbit和ios::eofbit.进而我们不能再读取内容了,毕竟文章末尾已经没有东西可读了。但是但我们用命令行CTRL+Z+Enter模拟EOF后还想继续输入怎么办呢?
*读到文件末尾后继续读写输入缓冲区的内容*/
#include <iostream>#include <ios>using namespace std;
int main(int argc, char** argv) {char input;int count = 0;while(cin >> input){cout<<input<<flush;count++;}cout<<count<<" End."<<endl;cout<<"failbit "<<( cin.rdstate() & ios::failbit )<<endl;cout<<"eofbit "<<( cin.rdstate() & ios::eofbit )<<endl;cout<<"badbit "<<( cin.rdstate() & ios::badbit )<<endl;if((cin.fail() && cin.eof())){int ch;cin.clear();cout<<"failbit "<<( cin.rdstate() & ios::failbit )<<endl;cout<<"eofbit "<<( cin.rdstate() & ios::eofbit )<<endl;cout<<"badbit "<<( cin.rdstate() & ios::badbit )<<endl;bool bl = !isspace(cin.get());while(bl){continue;}}else{cout<<"can't go on.\n";exit(1);}while(cin >>input)cout<<input<<flush;return 0;}

0 0
原创粉丝点击