【问题标题】:C++ Ofstream a new lineC++ Ofstream 换行
【发布时间】:2011-06-15 02:15:20
【问题描述】:

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

所有内容都写在同一行,没有新行...我错过了什么吗?

【问题讨论】:

  • 在 Windows 7 上,使用 notepad.exe 读取输出文件

标签: c++ newline ofstream


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    使用

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 这就是我这样做的原因......这不是问题,但无论如何谢谢
      【解决方案4】:

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

      您没有说您正在使用什么平台,但如果您使用的是 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 字符。

      【讨论】:

        猜你喜欢
        • 2012-03-31
        • 1970-01-01
        • 2013-02-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多