代码:
#include <iostream>
using namespace std;
int main(int argc, const char * argv[]) {
char ch;
int count = 0;
cout << "Please use Ctrl+D : ";
cin.get(ch);
while (cin.fail() == false) {
cout << ch;
++count;
cin.get(ch);
}
cout << endl << "All char number is : " << count << endl;
return 0;
}
说明
1.之前我们使用的哨兵字符作为检测输入结束的标志,但是哨兵字符可能是正常文本输入中的一部分,这样的话可能就会影响我们的输入,所以 我们还可以使用 检测文件尾EOF的方法来进行检测输入是否结束;
2.我们可以通过键盘来模拟EOF标志,检测到EOF之后,cin将eofbit和failbit都设置为1,fail()成员函数返回true,结束while循环。
3.cin.eof()和cin.fail()都是事后报告最近读取的结果而不是事先报告。