| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2061 人关注过本帖
标题:[求助]求助关于文件流的一道题
取消只看楼主 加入收藏
hzdz
Rank: 2
等 级:论坛游民
帖 子:46
专家分:10
注 册:2007-2-3
收藏
 问题点数:0 回复次数:14 
[求助]求助关于文件流的一道题
编写一个函数,其唯一的形参和返回值都是istream&类型。该函数应一直读取流到达文件结束符为止,还应将读到内容输出到标准输出中。最后,重设流使其有效,并返回该流。

这是c++ primer上的一道题,我以前对文件操作都是用C语言的方法进行,对这个流基本上没个概念,甚至都读不懂题

请各路高手帮我写个程序框架,或者分析也行,叫我干什么,函数是写成下面这样吗?
istream& process_input(istream& is);

我就有点奇怪既然形参是引用了,还返回它干什么,似乎没有必要

请大家不吝赐教,谢谢
搜索更多相关主题的帖子: 文件 函数 primer 应将 
2007-09-16 23:04
hzdz
Rank: 2
等 级:论坛游民
帖 子:46
专家分:10
注 册:2007-2-3
收藏
得分:0 

感谢二楼三楼的回复,我也是像三楼这么写的。。用vector<string>保存,不过打不出来。。,

看来我的理解还是有点靠谱的,谢谢你们
下面是我自己的函数,大家帮我看看哪出错了,打不出来

istream &process_input(istream& is)
{
string str;
vector<string> svec;

while (is>>str,!is.eof())
{
cout<<"正在进行读入操作,请稍候..."<<endl;
if (is.bad())
{
throw runtime_error("该文件已经损坏,不可读取!");
}
if (is.fail())
{
cerr<<"有一个错,重试"<<ends;
is.clear();
continue;
}

svec.push_back(str);
}

cout<<"已经读入文件,现在将其打印出来"<<endl;
for (std::vector<string>::const_iterator it=svec.begin();it!=svec.end();++it)
{
cout<<*it<<" ";
}
cout<<endl;

return is;
}

我自己测试的时候使用ifstream绑定一个txt文件,打不出来。。

2007-09-17 11:32
hzdz
Rank: 2
等 级:论坛游民
帖 子:46
专家分:10
注 册:2007-2-3
收藏
得分:0 
再回复三楼版主:

C++正处于学习当中,好些东西以前没接触过,像cout<<xx<<yy<<..这种只是机械地会使,而不知其所以然。所以问的问题有旱可能会比较菜,还望不要见怪哈。
2007-09-17 11:34
hzdz
Rank: 2
等 级:论坛游民
帖 子:46
专家分:10
注 册:2007-2-3
收藏
得分:0 
6楼版主,看看我4楼贴出来的,我认为和你的一样,但用一个fstream测试时,一个都打不出来
2007-09-17 14:47
hzdz
Rank: 2
等 级:论坛游民
帖 子:46
专家分:10
注 册:2007-2-3
收藏
得分:0 

首先谢谢你

这里关于逗号表达式的应用有一点疑问:
我原来先判断是不是有输入,再判断输入是不是结尾。这样的话不管读入过程中发生什么问题,都可以继续读入,直到遇到文件结束符。而你改进以后的函数只管读入,万一有错(无论出现bad还是fail),流都处于错误状态,文件读入就不会完全

不知道我的理解对不对?请指教

2007-09-17 16:19
hzdz
Rank: 2
等 级:论坛游民
帖 子:46
专家分:10
注 册:2007-2-3
收藏
得分:0 
版主,刚才把你的东西复制进去。。调试不对啊,我的环境是vc6
2007-09-17 16:37
hzdz
Rank: 2
等 级:论坛游民
帖 子:46
专家分:10
注 册:2007-2-3
收藏
得分:0 

注掉第二个函数,只用第一个,无限读入

注掉第一个函数,只用第二个,vector.size()==0

2007-09-17 16:38
hzdz
Rank: 2
等 级:论坛游民
帖 子:46
专家分:10
注 册:2007-2-3
收藏
得分:0 
我的是vc6.0。。我再试试吧
2007-09-17 20:11
hzdz
Rank: 2
等 级:论坛游民
帖 子:46
专家分:10
注 册:2007-2-3
收藏
得分:0 

问题全部解决,我全程犯了个错误,鉴于这个错误是如此低级。。。就不说了

hJin版,你的函数正确,我的也能用~

Thank you so much

2007-09-17 21:06
hzdz
Rank: 2
等 级:论坛游民
帖 子:46
专家分:10
注 册:2007-2-3
收藏
得分:0 
新问题:为什么我的测试文件中最后一个字符后面必须得加个空格呢?
2007-09-17 22:08
快速回复:[求助]求助关于文件流的一道题
数据加载中...
 
   



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

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