c++ - 找到系统的行终止符

标签 c++ c header newline

是否有一个头文件在某处存储系统的行终止符(因此没有任何#ifdef它可以在所有平台上工作,MAC,Windows,Linux等) ?

最佳答案

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

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

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

#ifdef __WINDOWS__    // Or something like that
#define END_LINE    "\r\n"
#else
#define END_LINE    "\n"
#endif

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

关于c++ - 找到系统的行终止符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14586154/

相关文章:

c++ - 为什么 C++ 将 unsigned char 值打印为负数?

c++ - 可变参数模板类中的模板特化和选择

c - 如何在C中通过udp套接字发送整数数组?

c - 初始化指向 NULL 的指针数组

c - 在 C 中使用 wchar

c++ - 我可以从 C++ 访问包含 QtObject 的 QQmlContext 吗?

c++ - 生成大小不是 16 的倍数的加密数据

c、strtok和strcat一起使用

python - 在 django/python 上访问请求 header

c++ - 如何编译 g++ 多个文件(对我不起作用)