IO库 8.1

题目:编写函数,接受一个istream&参数,返回值类型也是istream&。此函数须从给定流中读取数据,直到遇到文件结束标志时停止。它将读取的数据打印在标准输出上。完成这些操作后,在返回流之前,对流进行复位,使其处于有效状态。

 1 #include <iostream>
 2 using namespace std;
 3 
 4 istream& fun(istream& in)
 5 {
 6     int n;
 7     while (in >> n, !in.eof()) {    // 读取数据,直到遇到文件结束符
 8         if (in.bad()) {             // 系统级别故障,不可恢复,流不能继续使用,只能退出
 9             throw runtime_error("IO stream corrupted");
10         }
11         if (in.fail()) {            // 错误,但可恢复
12             cerr << "bad data, try again" << endl;
13             in.clear(istream::goodbit);
14             in.ignore(1, ' ');      // 忽略前面的错误输入
15             continue;
16         }
17         cout << n << " from the fun" << endl;
18     }
19     in.clear();
20     return in;
21 }
22 
23 int main()
24 {
25     fun(cin);
26     int v = -1;
27     cin >> v;
28     cout << "v = " << v << endl;
29     return 0;
30 }
原文地址:https://www.cnblogs.com/ykzou/p/5109072.html