[求助]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这个对象有什么不同之处?








