CR+LF 与 LF 和 CR 之间的 C++ stdin 和 stdout 转换

标签 c++ linux windows stdin lf

好的,我计划创建一个文件来存储我将导入到程序中的数据。该程序将为 Linux、Windows 和可能的 Mac 编译。

现在我真正想知道的是,由于这些文件中的换行符,我是否需要这些数据文件略有不同,或者 stdin 对我所在的系统不挑剔?

这会不会有问题?如果是这样,克服这些问题的正确方法是什么?还有其他我可能忽略的问题吗?

最佳答案

如果程序不打算由用户阅读,只需确保以与输入相同的形式输出它。在这种情况下,使用二进制格式可能更容易。

无论如何,请确保将流设置为二进制,否则 Windows 可能会将文本流的\n 扩展为\r\n。

或者,对于供用户读取的文本文件,以与平台无关的方式克服此问题的最简单方法之一是贪婪地消耗所有相邻的\r 和\n 字符作为单行结尾,并且您不必担心如何输出它。

关于CR+LF 与 LF 和 CR 之间的 C++ stdin 和 stdout 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16831882/

相关文章:

c++ - 我可以只将数组的特定元素声明为常量吗? (C/C++/语言)

c++ - 如何正确使用 cv::triangulatePoints()

c++ - 如何从 Lua 上下文中卸载代码

linux - 从 http ://repo_path to svn://repo_path 切换 SVN 存储库名称

c++ - 在 C++ 中使用数组或 std::vectors,性能差距是什么?

c - 在执行时强制使用特定库

linux - 如何在 Linux 上安装 Git

c# - 我正在使用 dll 的头文件在 c# 中为 c++ 编写包装器库,但无法弄清楚如何转换类型。

node.js - 将文件存储在本地哪里,以便在删除 Electron 应用程序后不会删除它们?

windows - Vim:Windows 下终端中的编码(Unicode)