C++ 确定平台的便携式方法';s线分离器

C++ 确定平台的便携式方法';s线分离器,c++,newline,C++,Newline,不同的平台使用不同的行分隔符方案(LF、CR-LF、CR、NEL、Unicode行分隔符等)。通过将 \\n′/Co>转换为目标平台的原生新行编码,C++和(c)运行库对大多数程序都有很多透明性。但是,如果您的程序需要确定实际使用的字节序列,您如何能够以可移植的方式进行呢 我想到的最好的方法是: 以文本模式编写一个临时文件,其中只包含'\n',让运行时进行翻译 以二进制模式读回临时文件以查看实际字节 那感觉糟透了。有没有一种不用临时文件的方法?我尝试了stringstreams,但是运行时实际上

不同的平台使用不同的行分隔符方案(LF、CR-LF、CR、NEL、Unicode行分隔符等)。通过将<代码> \\n′/Co>转换为目标平台的原生新行编码,C++和(c)运行库对大多数程序都有很多透明性。但是,如果您的程序需要确定实际使用的字节序列,您如何能够以可移植的方式进行呢

我想到的最好的方法是:

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

  • 那感觉糟透了。有没有一种不用临时文件的方法?我尝试了stringstreams,但是运行时实际上并没有在该上下文中翻译
    '\n'
    (这很有意义)。运行时是否以其他方式公开此信息?

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

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