c++的流,不带CRLF的打印

C++ ofstream, printing without CRLF

本文关键字:打印 CRLF 不带 的流 c++      更新时间:2023-10-16

我有一个c++代码,我运行在Linux与葡萄酒。我认为这实际上是问题的一部分。

通常,当我在本地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下运行到没有CRLF行终止符的输出文件,并且以一种我可以在同一台机器上使用本机Linux c++代码读取它的方式?

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

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