gpt4 book ai didi

rust - 如何在 Rust 中获取当前平台的行尾字符序列?

转载 作者:行者123 更新时间:2023-11-29 07:57:32 25 4
gpt4 key购买 nike

我正在寻找一种在运行时获取平台行尾字符序列(Windows 为 CRLF,Linux/macOS 为 LF)的方法。

最佳答案

我不认为有任何功能可以专门执行此操作。甚至标准库的行感知功能也没有:BufRead::read_line被记录为仅识别 \nBufRead::lines (source) ,去除行尾字符,只对 \n\r\n 这样做,不区分调用它的平台。

不过,“平台行结尾”确实是一个类别错误。文件通过网络发送并从一台计算机复制到另一台计算机。如果你的程序在记事本中写入需要在 Windows 上打开的文件,那么生成它们的程序是在 Windows 上运行还是在 Linux 上运行都没有关系;它需要发出 \r\n。同样,如果程序正在编写特定的文件格式或实现某种网络协议(protocol);格式或协议(protocol)应该告诉您使用什么行分隔符。如果格式允许并且没有约定,请选择您喜欢的一种;只需始终如一地使用它。

如果您正在阅读 行尾,您可能应该容忍其中任何一种,就像 BufRead::lines 那样。

但是,如果您真的需要,比如您的输出将被一个编写糟糕的程序读取,该程序期望在不同平台上使用不同的行结尾,您可以使用 conditional compilation实现此效果的属性:

#[cfg(windows)]
const LINE_ENDING: &'static str = "\r\n";
#[cfg(not(windows))]
const LINE_ENDING: &'static str = "\n";

关于rust - 如何在 Rust 中获取当前平台的行尾字符序列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47541191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com