为什么函数 tellg() 没有返回好的结果?



我不明白为什么我的函数tellg()从 0 跳到 2 这是我的代码:

ifstream uploadFile("upload.txt");
char letter;
uploadFile.seekg(0);
cout<<uploadFile.tellg()<<endl;
while(uploadFile.get(letter))
cout<<uploadFile.tellg()<<endl;
return 0;

我的文件包含以下行:

0 TS1

这些是我期望的结果:

0
1
2
3
4
5
6

但我得到这个:

0
2
3
4
5
6
7

您的文件upload.txt可能以空行开头:


0 TS1

文本模式下ifstream(默认值(将换行符视为单个字符。 但是在Windows上,换行符由两个字节(CRLF或rn(组成。因此,每次读取换行符时,文件位置都会提前 2。

您可以在二进制模式下打开文件:

ifstream uploadFile("in.txt", ios::binary);

然后get()将始终一次读取 1 个字节,因此也分别rn字符。

最新更新