先比较两个代码块
#include<iostream>
using namespace std;
int main() {
char ch;
int count = 0;
cin.get(ch);
while (cin.fail() == false) {
cout << ch;
++count;
cin.get(ch);//通过<CTRL>+Z<ENTER>模拟EOF
}
cout << endl << count << " characters\n";
system("pause");
return 0;
}
下面一个代码更为简洁
#include<iostream>
using namespace std;
int main() {
int ch;
int count = 0;
while ((ch=cin.get())!=EOF) {
cout.put(char(ch));
++count;
}
cout << endl << count << " characters\n";
system("pause");
return 0;
}
1.第二个代码中cin.get()返回一个int类型的字符编码,同时EOF被定义为-1,所以ch被声明为int型而不是char型
2.cout.put()使用是应将传入的参数强制转化为char型
3.应为使用键盘模拟EOF,所以之后用cin.get来锁住屏幕是不行的,可以使用system(“pause”)或记时循环或用cin.clear()重置输入流