我不明白为什么我的函数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 个字节,因此也分别r
和n
字符。