C ++ Ofstream一条新线

时间:2011-06-15 02:15:20

标签: c++ newline ofstream

我正试图在游戏中做一个新行,但它不起作用。一切都写在OUTPUT.txt

的同一行
std::ofstream output;
output.open("OUTPUT.TXT");
output << "sometext" << "\r\n" << "sometext" << "\r\n" << "sometext";
output.close();

我也试过

output << "sometext" << std::endl << "sometext" << std::endl << "sometext";

output << "sometext" << "\n" << "sometext" << "\n" << "sometext";

output << "sometext" << '\n' << "sometext" << '\n' << "sometext";

一切都写在同一条线上,没有新线......我错过了什么?

4 个答案:

答案 0 :(得分:2)

如果您正在使用cygwin的g ++,had some issues converting the "\n" to windows-style CRLF under some settings,我尝试了一个简单版本的代码片段,它运行正常。尝试在另一个文本编辑器中打开,看看问题是否仍然存在。

答案 1 :(得分:0)

可能。您正在阅读该文件的不同副本,而不是您的程序正在写入的副本。删除该文件,然后运行您的程序。

答案 2 :(得分:0)

在这种情况下,我发现最好在十六进制编辑器中查看文件,而不是文本编辑器,它可以拥有关于如何呈现文本的自己的想法,它也可以很好地找到讨厌的不可打印字符可以绊倒你。

您没有说明您正在使用哪个平台,但如果您使用的是Windows,我建议使用HxD

如果你在Windows上,你会看到类似的东西:

Offset(h) 00       04       08       0C       10       14       18       1C

00000000  736F6D65 74657874 0D0A736F 6D657465 78740D0A 736F6D65 74657874 0D0A      sometext..sometext..sometext..

在上面的例子中,十六进制序列0D0A是Windows上的'\ n'字符。

答案 3 :(得分:0)

使用

output.open("OUTPUT.TXT", ios::out);

提醒您ios::binary无法使用。