#include <iostream> using namespace std; int main() { int n; int maxN = 0; while (cin >> n){ //输入没有结束,cin 就返回 true,条件就为真 if (maxN < n) maxN = n; } cout << maxN <<endl; return 0; }在 Windows 下运行该程序,先输入以下整数:
10
30
93
206
8
10↙
30↙
93↙
206↙
8↙
^Z↙
206
↙
表示回车键,^Z
表示 Ctrl+Z 组合键。
freopen("test.txt", "r", stdin);
语句,或者不添加上述语句,但是在 Windows 的“命令提示符”窗口中输入:
mycin < test.txt //假设编译生成的可执行文件的名字为 mycin.exe
则都能使得本程序不再从键盘输入数据,而是从 test.txt 文件输入数据(前提是 test.txt 文件和 mycin.exe 在同一个文件夹中)。在这种情况下,test.txt 文件中并不需要包含 Ctrl+Z,只要有用空格或回车隔开的若干个正整数即可。cin>>n
就会返回 false,从而导致程序结束。例如,假定 test.txt 文件中的内容如下所示:
112
23123
34 444 55
44
mycin < test.txt
,则程序的输出是:
23123
>>
重载为成员函数,而且这些成员函数的返回值是 cin 的引用。准确地说,cin>>n
的返回值的确是 istream & 类型的,而 while 语句中的条件表达式的返回值应该是 bool 类型、整数类型或其他和整数类型兼容的类型,istream & 显然和整数类型不兼容,为什么while(cin>>n)
还能成立呢?cin>>n
这样的表达式也会返回 false。例如下面的程序:
#include <iostream> using namespace std; int main() { int n; while (cin >> n) cout << n << endl; return 0; }程序本该输入整数,如果输入了一个字母,则程序就会结束。因为,应该读入整数时却读入了字母也算读入出错。
Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有