繁体   English   中英

以便携方式确定平台的行分隔符

[英]Portable way to determine the platform's line separator

不同的平台使用不同的行分隔符方案(LF,CR-LF,CR,NEL,Unicode LINE SEPARATOR等)。 C ++(和C)运行时库通过将'\\n'转换为目标平台的本机新行编码来使大多数程序透明化。 但是如果你的程序需要确定使用的实际字节序列,你怎么能这样做呢?

我提出的最好的方法是:

  1. 在文本模式下写一个临时文件,其中只包含'\\n' ,让运行时进行翻译。
  2. 以二进制模式回读临时文件以查看实际字节。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM