所以我正在阅读有关文件处理的内容,并希望从最后读取一个文本文件。所以我决定使用
寻找指向最后一个字符的get指针 seekg(-2,ios::end);
我的完整代码是:
fin.open("source.txt");
fin.seekg(-2,ios::end);
fin>>ch;
if(fin.fail())
cout<<"uh oh!";
else
cout<<ch;
我的问题是为什么我必须使偏移-2而不是-1,因为我假设ios::end
将get指针放在文件的最后一个有效字符之后的一个位置。
有任何帮助吗? 感谢。
答案 0 :(得分:1)
您输入错误的原因是您使用>>
,并确实将最后一个字符设为'\n'
或空格。
在-1上找到你的位置&#39; \ n&#39;但被提取器>>
忽略了它(skips all whitespaces和&#39; \ n&#39;) 。如果您之前使用-2定位一个字符,那么您肯定会使用最后一个非空格字符并且它可以正常工作。
要真正了解文件末尾的内容:
in.open("source.txt");
fin.seekg(-1,ios::end); // -1 is really the last char of the file
ch = fin.get(); // read one character without ignoring anything
if(fin.fail())
cout<<"uh oh!";
else
cout<<(int)ch <<"="<<ch<<endl; // display char code (if not printable) and char