C++ ofstream line break

Pab*_*eco 8 c++ line-breaks ofstream

这是我的代码:

#include <iostream>
#include <fstream>
using namespace std;
int main()
{
    ifstream ifile ("input.dat", ios::in);
    ofstream ofile ("output.dat",ios::out);

    int num;
    ifile >> num;
    ofile << num;
    ofile << endl;
    ofile << "Did we go to new line?";
    ofile << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是,output.dat中的所有内容都在同一行.我该如何解决这个问题?

谢谢!

编辑:我使用Windows来查看文件和Linux进行编译.这就是我遇到这个问题的原因.使用cat output.dat在Linux中看到文件的内容会发现,Windows与Linux的换行符是在不同的时间.

小智 6

更换std::endl"\r\n"得到CRLF,而不是仅仅LF的.

  • 我建议不要这样做.除非你在Unix下编写文件,并且你想要Windows行结尾,否则没有太多选择.(我想知道是否有人实现了一个带有额外格式化选项的`filebuf`,以指定应该用于输出的行结束约定.) (5认同)

thi*_*ton 2

std::endl 已经插入了换行符,因此文件中有换行符。我假设您在 LF 系统(Linux 或其他类似 UNIX 的系统)上生成文件并在 CRLF 系统上查看它。在这种情况下,您的换行符不会在文本编辑器中显示为换行符。unix2dos是你的朋友。

  • 即使他在Unix下生成并在Windows下读取,大多数编辑器都会正确显示。如果这是他的问题,正确的解决方案是使用不同的编辑器;真正的 Windows 程序将输出 CRLF,但与输入无关(就像真正的 Windows 程序将输出“\”作为路径分隔符,但接受“\”和“/”)。 (3认同)
  • @Pirate43 记事本没用。尝试其他任何方法(甚至从控制台窗口“输入文件名”)。 (2认同)