我有一个 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 文本。
这是一个问题,因为如果我想使用在同一台机器上运行的 native Linux C++ 代码读取文件,CRLF 行终止符确实会搞乱很多文件处理和解析。
有没有办法让代码在 wine 下运行以输出没有 CRLF 行终止符的文件,并且我可以在同一台机器上使用 native Linux C++ 代码读取它?
最佳答案
您可以在 ios::binary
模式下打开文件。严格来说,这并不意味着它是一个二进制文件 [比任何其他文件都多的是“文本”,因为所有文件都是二进制文件]。在此上下文中的二进制仅表示“不要通过将字符解释为特殊字符、添加或删除任何字符等来处理文件中的内容。
或者当您将文件复制到 Linux 时,使用 dos2unix myfile.txt
将其从“dos”(和 Windows)格式转换为“unix”风格的文本文件。
关于C++ ofstream,不带 CRLF 的打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16844299/