代码之家  ›  专栏  ›  技术社区  ›  Adrian McCarthy

确定平台线路分离器的便携式方法

  •  11
  • Adrian McCarthy  · 技术社区  · 15 年前

    不同的平台使用不同的行分隔符方案(LF、CR-LF、CR、NEL、Unicode行分隔符等)。C++(和C)运行库使大多数程序透明化,通过转换 '\n' 目标平台的本机新行编码。但是,如果您的程序需要确定实际使用的字节序列,那么您如何能够方便地执行它呢?

    我想出的最佳方法是:

    1. 以文本模式写入临时文件 “n” 在其中,让运行时进行翻译。
    2. 以二进制模式读取临时文件以查看实际字节。

    那感觉很蹩脚。有没有一种不使用临时文件的方法?我改为尝试了StringStreams,但运行时实际上无法转换 “n” 在这种情况下(这是有意义的)。运行时是否以其他方式公开此信息?

    1 回复  |  直到 12 年前
        1
  •  7
  •   mdma    15 年前

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

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