我有一个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 ++代码读取它?
答案 0 :(得分:2)
您可以在ios::binary
模式下打开文件。严格来说,这并不意味着它是一个二进制文件[比任何其他文件都更“文本”,因为所有文件都是二进制文件]。在这种情况下,二进制只是意味着“不要通过将字符解释为特殊字符,添加或删除任何字符等来清除文件中的内容。
或者,当您将文件复制到Linux时,使用dos2unix myfile.txt
将其从“dos”(和Windows)格式转换为“unix”样式文本文件。