C ++ FileIO奇怪的行为

时间:2015-03-17 08:05:50

标签: c++ file-io windows-8.1 ofstream

在编写程序时,我遇到了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

如果我给出一个空格,然后选项卡(\ t),那么它可以正常工作或者那个问题\ n也可以正常工作。 dire << dir[i] << " \t";

现在的输出是:

4   4   4   4   5   5   5   5   5   5.. and so on

我还尝试dire.flush()将输出缓冲区刷新到文件,但结果仍然相同。

我绝对可以通过\t逃脱,但我想了解为什么会这样。

1 个答案:

答案 0 :(得分:6)

如果您使用记事本查看该文件,那么错误Bush hid the facts可能就是问题。

  

当字符串传递给Win32字符集检测函数IsTextUnicode而没有其他字符时,会发生错误。 IsTextUnicode看到它认为有效的UTF-16LE中文并返回true,然后应用程序错误地将文本解释为UTF-16LE。