文件指针移动无效?

szzfl 2007-01-20 06:57:30
temp.txt文件的内容为:

abcdefg


void main(int argc, char* argv[])
{
fstream file("temp.txt",ios::in |ios::binary);

char ch;
int i(0);
while(!file.eof())
{
file.read(&ch,1);
i++;
}

cout<<i-1<<endl; //文件长度


int a;

file.seekg(ios::beg);

a=file.tellg();
cout<<a<<endl; //显示为0

file.read(&ch,1);

cout<<ch<<endl; //怎么这里显示为g??文件指针已经置头了?
}
...全文
290 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdlyczl 2007-01-23
  • 打赏
  • 举报
回复
如果lz那里a = 0的话,应该读出来的是文件第一个字母a吧
我试验结果是,a = -1,读出文件最后一个字母g

---------------------------------------
int a;

file.seekg(ios::beg);

a=file.tellg();
cout<<a<<endl; //显示为0
roger_77 2007-01-21
  • 打赏
  • 举报
回复
while(!file.eof())//在它完成之后,流状态已不正确。
{
}
file.clear(); //先清除流状态(默认为还原到初始状态).
file.seekg(ios::beg);//再设置流的读取位置.

还有一点,文本文件就直接使用字符方式读取了,干嘛非用二进制方式读取呢?
wangmuqq88 2007-01-20
  • 打赏
  • 举报
回复
C/C++高级群20641933
HewpKanXue 2007-01-20
  • 打赏
  • 举报
回复
//流状态已不正确。
file.clear();
file.seekg(ios::beg);

64,281

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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