文件尾条件

using namespace std;
char ch;
int count = 0;

cout << "Enter characters; enter # to quit:\n";
cin.get(ch); // use the cin.get(ch) function
while (ch != '#')

 

using namespace std;
char ch;
int count = 0; // use basic input
cout << "Enter characters; enter # to quit:\n";
cin >> ch; // get a character
while (ch != '#')

 

以上两种情况是通过特殊符号#来表示输入的结束,但这两种情况不让人满意,因为特殊字符本身可能就是合法输入内容,所以我们引用了一种功能更强大的技术---检测技术尾(EOF)。

允许用文件替换键盘输入。例如,假设在Windows下有一个名为gofish.exe的程序和一个名为fishtale的文本文件,则可以在命令提示符模式下输入下面的命令gofish<fishtale,这样,程序将从fishtale文件中获取输入。

 

**Windows操作系统允许键盘输入来模拟EOF,输入Ctrl + Z 即可模拟文件尾条件,即程序立即结束

在C++中使用这样的代码来检测: while (cin.fail() == false)     // test for EOF

因为cin.fail()如果检测到EOF,就可以返回值true,反之返回false。

而上述代码有以下另外几种方式:
1:

int ch;

ch = cin.get();

while(ch!= EOF)

2:字符输入时,甚至可以这样用

cin.get(ch);

while(cin)

因为cin.get(char)的返回值是一个cin对象,而且关键是C++提供了一种可以将istream对象(比如cin)转换为bool值得函数,这种函数,当cin出现在需要bool值的地方时,被调用。

甚至可以将上述两行函数进行再一次精简

while(cin.get(ch))

道理同上

 

posted @   Goodmann  阅读(64)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示