C Primer中第8章关于流的一道习题,帮忙看一下

时间:2008-05-26 11:10:12   来源:论坛整理  作者:  编辑:chinaitzhe
问题:编写一个函数,其唯一的形参和返回值都是istream&类型。这个函数应一直读取流直到到达文件结束符为止,还应将读到的内容输出到标准输出中。最后,重设流使其有效,并返回该流。通过以cin为实参实现掉用来测试这个函数。
这个是我写的程序:
#include <iostream>
#include <string>

using namespace std;

istream& ReadInput(istream& state)
{
string temp;
while(state>>temp, !state.eof())
cout < <temp;
state.clear();

return state;
}

int main()
{
istream _state = ReadInput(cin);
return 0;
}
编译时出现错误:
c:\program files\microsoft visual studio 9.0\vc\include\istream(846) : error C2248: 'std::basic_ios <_Elem,_Traits>::basic_ios' : cannot access private member declared in class 'std::basic_ios <_Elem,_Traits>'
这个是什么意思?
假如在main()函数中调用的时候直接调用就没有错误,为什么啊?
#include <iostream>
#include <string>

using namespace std;

istream& ReadInput(istream& state)
{
string temp;
while(state>>temp, !state.eof())
cout < <temp;
state.clear();

return state;
}

int main()
{
ReadInput(cin); //这里直接调用就可以。
return 0;
}
还有,我这个程序对不对啊?符不符合题目的要求啊?
网友回复:istream& _state = ReadInput(cin);

网友回复:没有错误阿
网友回复:
引用 1 楼 akirya 的回复:
istream& _state = ReadInput(cin);

能不能解释一下啊?
返回值是引用的函数就得这样调用吗?
网友回复:你不写&那么就会产生一个新的istream的对象.
但是这个对象是不答应拷贝的,所以得使用引用
关键字:Primer,章流,一道,习题,帮忙,

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面