C ++ ofstream,无CRLF打印

时间:2013-05-30 19:24:07

标签: c++ linux ofstream carriage-return wine

我有一个C ++代码我在Linux上用wine运行。我认为这实际上是问题的一部分。

通常,当我在本机Linux C ++程序中执行类似的操作时:

ofstream fout;
fout.open("myfile.txt")
fout<<"blah blah"<<endl;
fout<<"blah blah 2"<<endl;
fout.close;

该文件是标准的ASCII文本。但是,在我在wine下运行的代码中,myfile.txt现在是带有CRLF行终止符的ASCII文本。

这是一个问题,因为如果我想使用在同一台机器上运行的本机Linux C ++代码来读取文件,那么CRLF行终止符实际上会破坏大量的文件处理和解析。

有没有办法让wine在wine下运行,输出没有CRLF行终止符的文件,并且我可以在同一台机器上使用原生Linux C ++代码读取它?

1 个答案:

答案 0 :(得分:2)

您可以在ios::binary模式下打开文件。严格来说,这并不意味着它是一个二进制文件[比任何其他文件都更“文本”,因为所有文件都是二进制文件]。在这种情况下,二进制只是意味着“不要通过将字符解释为特殊字符,添加或删除任何字符等来清除文件中的内容。

或者,当您将文件复制到Linux时,使用dos2unix myfile.txt将其从“dos”(和Windows)格式转换为“unix”样式文本文件。