很多题目要去读取到文件末尾,比如:
输入若干行,每行包括两个整数 ,对于每一行都输出一行 的值。
cin >> ...
语句的返回值是一个输入流引用,如果读取到了文件末尾,对应的布尔值就是假,所以可以用下面的代码完成上述题目。
int a, b;
while (cin >> a >> b)
cout << a + b << "\n";
scanf(...)
的返回值为成功输入了几个变量,如果读取到了文件末尾,则会返回 EOF
(end of file),所以可以用下面的代码完成上述题目。
int a, b;
while (scanf("%d %d", &a, &b) != EOF)
printf("%d\n", a + b);
而 EOF
对应的数值为 -1
,所以也可以用下面的两种方式实现。
while (scanf("%d %d", &a, &b) != -1)
printf("%d\n", a + b);
while (~scanf("%d %d", &a, &b))
printf("%d\n", a + b);
char c;
while ((c = getchar()) != EOF)
cout << c;
string s;
while (getline(cin, s))
cout << s << "\n";