| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 809 人关注过本帖
标题:[求助]C++ primer中的一道关于标准IO库的问题
只看楼主 加入收藏
点解咁问
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-30
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:4 
[求助]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这个对象有什么不同之处?
搜索更多相关主题的帖子: color 
2011-10-30 15:04
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回头看书就成了,有讲解的,读书不要浮躁。

授人以渔,不授人以鱼。
2011-10-30 15:39
点解咁问
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-30
收藏
得分:0 
回复 2楼 TonyDeng
我也觉得我浮躁了,但是我已经读了几遍C++ primer第八章关于标准IO库,里面对于istream和ostream实在是诠释得比较少, 我只知道cin和cout分别作为istream和ostream的一个实例,那如果这样:istream cin1,ostream cout2  
cin1和cout2不也是istream 和ostream的实例吗?
2011-10-30 17:53
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:20 
cin和cout是特殊定制的流,如果你要自己写一个不同的输入流,必须使用istream的构造格式。你建立ist时,应该有参数,比如istream ist(cin)或istream ist(_Uninitialized)这样写。

授人以渔,不授人以鱼。
2011-10-30 21:31
点解咁问
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-30
收藏
得分:0 
回复 4楼 TonyDeng
THX!
2011-10-30 22:43
快速回复:[求助]C++ primer中的一道关于标准IO库的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025551 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved