2

我正在尝试在 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

4 回答 4

2

如果您使用的是 cygwin 的 g++,在某些设置下将“\n”转换为 windows 样式的 CRLF 时会遇到一些问题,我尝试了一个简单版本的代码段,它运行良好。尝试在另一个文本编辑器中打开,看看问题是否仍然存在。

于 2011-06-15T02:39:45.927 回答
0

大概。您正在读取的文件副本与您的程序正在写入的文件副本不同。删除该文件,然后运行您的程序。

于 2011-06-15T02:20:33.787 回答
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\n上例中 Windows 上的字符。

于 2011-06-15T02:30:03.250 回答
0

利用

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

提醒您ios::binary不能使用。

于 2014-03-04T22:02:58.317 回答