我不相信有任何功能专门做到这一点.即使是标准库的行识别功能也没有:BufRead::read_line
被记录为只识别\n
,而BufRead::lines
(source)(go 除行尾字符)只识别\n
和\r\n
,不区分在哪个平台上调用它.
不过,"站台线结尾"实际上是一个类别错误.文件通过网络发送,并从一台计算机复制到另一台计算机.如果你的程序在记事本中写入需要在Windows上打开的文件,那么生成这些文件的程序是在Windows上运行还是在Linux上运行并不重要;它需要排放\r\n
.类似地,如果程序正在编写特定的文件格式或实现某种网络协议;格式或协议应该告诉您使用哪一行分隔符.如果格式允许,并且没有约定, Select 你喜欢的格式;坚持使用它.
如果你有reading个行尾,你可能应该容忍其中任何一个,就像BufRead::lines
个一样.
然而,如果你想要,比如如果你的输出会被一个写得很差的程序读取,该程序在不同的平台上需要不同的行结束符,你可以使用conditional compilation个属性来实现这个效果:
#[cfg(windows)]
const LINE_ENDING: &'static str = "\r\n";
#[cfg(not(windows))]
const LINE_ENDING: &'static str = "\n";