c++ - 确定平台的行分隔符的可移植方法

标签 c++ newline

不同的平台使用不同的行分隔符方案(LF、CR-LF、CR、NEL、Unicode LINE SEPARATOR 等)。 C++(和 C)运行时库通过将 '\n' 与目标平台的 native 换行编码相互转换,使大部分程序都透明化。但是,如果您的程序需要确定实际使用的字节序列,您如何才能做到可移植呢?

我想到的最好的方法是:

  1. 以文本模式编写一个只有 '\n' 的临时文件,让运行时进行翻译。
  2. 以二进制模式读回临时文件以查看实际字节数。

这感觉很糟糕。有没有办法在没有临时文件的情况下做到这一点?我改为尝试使用 stringstreams,但运行时实际上并未在该上下文中翻译 '\n'(这是有道理的)。运行时是否以其他方式公开此信息?

最佳答案

我不是 C/C++ 专家,但标准库中似乎没有任何东西可以直接为您提供行分隔符。翻译由文本模式文件函数透明地处理。

即使您觉得您的方法“笨拙”,但它可能是最简单和最可靠的,因为您实际上是在测试使用和写出的行分隔符。并且是可移植的,因为您使用标准库函数来写入和读取文件。

关于c++ - 确定平台的行分隔符的可移植方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2750636/

相关文章:

c++ - 处理相似代码的优雅方式

c++ - 可变参数模板提取

c++ - 代码注入(inject)在 Vista 或 Win7 上不起作用?

newline - 什么是回车、换行和换页?

python - 我可以避免在Python中的2个for循环之间打印新行吗

c++ - 我怎样才能看出地址和值 C++ 类之间的区别?

c++ - 确保指向父类(super class)的指针指向C++中某个子类的对象

Git log 漂亮的格式,如果非空则在占位符后换行

c# - 字符串的奇怪结果

c# - C# 通知中的新行(紧凑型框架)