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 行结尾。
我需要将文本数据写入内存映射文件(使用 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 行结尾。