C/C++ - 查询依赖于平台的换行符(用于内存映射文件)

C/C++ - query platform-dependent newline (for memory-mapped file)

我需要将文本数据写入内存映射文件(使用 Boost)。我必须以原始模式进行,所以我不能使用 boost::stream 包装器。

我也想在文中写换行符。显然,我不能使用文本模式来依赖系统 \n 转换。我必须在给定平台上检测正确的 \n 表示并自己编写此序列。

我能想到的唯一方法是创建一个临时文件,以文本模式向其中输出\n,然后以二进制模式重新打开。但是这种方法很蹩脚。

有一些API可以直接查询平台相关的换行,不是吗?

不需要做任何花哨的事情,以下内容适用于 Windows、Mac 和 Linux:

#ifdef _WIN32
const std::string newline = "\r\n";
#else
const std::string newline = "\n";
#endif

或者只是到处写 \n,大多数 Windows 编辑器(记事本和 even that's changing 除外)都可以处理 Unix 行结尾。