一个流重新定向的问题。

zoohoo 2003-10-21 10:29:29
#include <iostream>
#include <fstream>

using namespace std;

void ReadFile(fstream &is)
{
char buf[1024];

for(;;)
{
while(!is.eof())
{
is.getline(buf, 1024);
cout << buf << "\n";
}
is = is.seekg(0, ios::beg); /* 为什么这句执行后 is.eof()还是为true,正确的程序应该怎么写?*/
}
}

int main(int argc, char *argv[])
{
fstream is("aaa", ios::in|ios::out);
if(is.bad() || !is.good())
{
cout << "Open file aaa error!\n";
exit(-1);
}

ReadFile(is);

is.close();
return 0;
}
...全文
35 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoohoo 2003-10-21
  • 打赏
  • 举报
回复
ok,使用clear之后就是好的,能告诉我clear这儿是什么意思吗?thx~
  • 打赏
  • 举报
回复
void ReadFile(fstream &is)
{
char buf[1024];

for(;;)
{
while(!is.eof())
{
is.getline(buf, 1024);
cout << buf << "\n";
}
is.clear ();//!
is.seekg(0, ios::beg); /* 为什么这句执行后 is.eof()还是为true,正确的程序应该怎么写?*/
}
}
arfi 2003-10-21
  • 打赏
  • 举报
回复
is = is.seekg(0, ios::beg);
改成
is.seekg(0, ios::beg);试试,不要赋值
Andy84920 2003-10-21
  • 打赏
  • 举报
回复
状态位!

注意它们是有状态的对象,一旦状态是false,则不能进行任何操作.
只能clear之后才会恢复它的状态继续使用.

liao2001 2003-10-21
  • 打赏
  • 举报
回复
feof判断的是状态标志
文件结束状态标志是由读写来触发的
  • 打赏
  • 举报
回复
清除流状态信息
static const iostate badbit, eofbit, failbit, goodbit;

其中eofbit: to record end-of-file while extracting from a stream

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧