[求助]C++ primer中的一道关于标准IO库的问题
题目:编写一个函数,其唯一的形参和返回值都是istream&类型。该函数应一直读取直到文件结束符为止,还应该将读取的内容输出到标准输出中,最后,重设流使其有效,并返回该流。下面是这个函数:
程序代码:
istream& get(istream& in) { int ival; while(in>>ival,!in.eof()) { if(in.bad()) { throw runtime_error("IO stream corrupted"); } if(in.fail()) { cerr<<"bad data,try again"; in.clear(); in.ignore(200,' '); continue; } cout<<ival<<" "; } in.clear(); return in; }
当用cin作为实参调用这个函数的时候,函数可以正常执行,但是当我自己定义一个istream的对象来作为实参调用函数的时候,例如:
int main()
{
istream ist;
get(ist);
return 0;
}
编译时候就出现下面的错误:
error C2512: “std::basic_istream<_Elem,_Traits>”: 没有合适的默认构造函数可用
这是为什么呢?cin和ist这个对象有什么不同之处?