找到系统的行终止符

soa*_*dos 5 c c++ newline header

是否有一个头文件存储系统的行终止字符(以便在没有任何#ifdefs 的情况下它可以在所有平台、MAC、Windows、Linux 等上运行)?

Mat*_*son 5

您应该以“文本模式”(即“不使用二进制”)打开文件,并且'\n'无论本机文件是什么,换行符始终为 。C 库将'\n'在适当的时候将任何表示换行符的本机字符翻译成[即读/写文本文件]。请注意,这也意味着您不能依赖“计算读取的字符数并使用它来“返回此位置”。

如果文件是二进制文件,那么换行符无论如何都不是换行符。

除非你计划在非常古老的系统上运行,并且你真的想这样做,否则我会这样做:

#ifdef __WINDOWS__    // Or something like that
#define END_LINE    "\r\n"
#else
#define END_LINE    "\n"
#endif
Run Code Online (Sandbox Code Playgroud)

这不适用于 MacOS X 之前的 MacOS,但肯定没有人再使用 MacOS X 之前的硬件了吗?


MSa*_*ers 3

不,因为它\n无处不在。当您将其写入文本文件时,它会扩展为正确的换行符。

  • @soandos:这也由标准库处理(这也是文本模式令人厌恶的主要原因:它会干扰错误级别的字节计数) (2认同)