当我输入is.seekg(0)时,它会将我的流定位到开头。但是,当我输入is.seekg(ios::end)时,它会将我定位到第二个字符。为什么会发生这种情况?我认为我对此的误解根源在于我对流如何工作的基本理解不足。我认为当您提供常量ios::end时,它应该将您带到该流的末尾。但是,似乎它会将您向前移动一个字符。
cin.seekg(0, ios::end);
int length = cin.tellg();
cout << length << endl;
cin.seekg(0);
cout << cin.tellg();
当我输入一个包含"123456789"的文件 < 时,
输出结果是10 0。
现在如果我这样做:
cin.seekg(ios::end);
int length = cin.tellg();
cout << length << endl;
输出结果为2。
为什么会是2?