C++ ofstream,不带 CRLF 的打印

标签 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 文本。

这是一个问题,因为如果我想使用在同一台机器上运行的 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/

相关文章:

c++ - 在 C++ 中将 cv::Mat 的 vector 写入二进制文件

C++:不能使用简单的指针?

c++ - 从 SinkWriter 或 ICodecAPI 或 IMFTransform 获取编码器名称

linux - arch 上的奇怪语言环境问题

C++ 从文件读取到 vector

c++ - 指定调用 std::copy 的小数精度

c++ - 是否建议始终使用 'binary' 模式打开文件?

c++ - 如何判断 c 函数 atoi 是否失败或是否是一串零?

linux - 在没有上游的情况下构建 Debian 软件包

c - 如何检查目录是否存在?