C++ FileIO 的奇怪行为
C++ FileIO weird behaviour
在编写程序时,我遇到了奇怪的std::ofstream
行为。请参考下面的代码
ofstream dire;
dire.open("dir.txt", std::ios::out);
// some other code
for(int i=0;i<dir.size();i++)
{
dire << dir[i] << "t"; // dir is integer vector containing values between 0-9
}
现在当我打开dir.txt
内容时:
ऴऴऴऴवववववववववशशशशशशशशशशषषषषषषषषरररररररऱऱऱऱऱऱऱऱऱललललललललललललळ.. and so on
如果我给一个空格,然后 tab(\t),那么它就可以正常工作,或者 也可以正常工作。 dire << dir[i] << " t";
现在输出是:
4 4 4 4 5 5 5 5 5 5.. and so on
我也尝试dire.flush()
将输出缓冲区刷新到文件,但结果仍然相同。
我绝对可以通过使用t
来逃脱,但我想了解为什么会发生这种情况。
如果您使用记事本查看文件,那么布什隐藏事实的错误可能是问题所在。
当字符串传递到 Win32 字符集检测函数 IsTextUnicode 时,没有其他字符,则会发生此错误。IsTextUnicode 看到它认为有效的 UTF-16LE 中文并返回 true,然后应用程序错误地将文本解释为 UTF-16LE。