提问人:unlink 提问时间:2/4/2016 最后编辑:unlink 更新时间:2/5/2016 访问量:184
wifstream.tellg() 在流中前进位置?
wifstream.tellg() advancing position in the stream?
问:
我一直在 Visual Studio 2015 中使用 iostreams 进行一些基本的文件操作,并注意到这种奇怪的行为。
#include <fstream>
#include <iostream>
#include <sstream>
void main(int argc, char** argv)
{
std::wifstream stream("example.txt");
//std::ifstream stream("example.txt");
//std::wstringstream stream(L"abcdefghijklmnopqrstuvxyz");
std::wcout << (char)stream.peek() << "\n"; // a
stream.tellg();
std::wcout << (char)stream.peek() << "\n"; // b
stream.tellg();
std::wcout << (char)stream.peek() << "\n"; // c
stream.tellg();
std::wcout << (char)stream.peek() << "\n"; // d
stream.tellg();
std::wcout << (char)stream.peek() << "\n"; // e
stream.tellg();
std::wcout << (char)stream.peek() << "\n"; // f
stream.tellg();
std::wcout << (char)stream.peek() << "\n"; // g
stream.tellg();
}
示例.txt包含:
abcdefghijklmnopqrstuvxyz
这似乎将流的当前特征提前了一个。这种情况只发生在 . 并且似乎不受影响。stream.tellg()
std::wifstream
std::ifstream
std::wstringstream
这是 Visual Studio stl 实现中的错误吗?
答:
0赞
wangke1020
2/5/2016
#1
此问题与 Visual C++ 2010 中的 wifstream/wfstream 实现错误类似。
正如斯蒂芬所说:
C++ 标准在调用 tellg() 时不提供行为保证 在以文本模式打开的文件中。
我想这就是原因。
评论