有没有办法强制打印!/ println!使用Windows新行(CR LF)

Seb*_*n K 5 rust

我在Windows 10上使用Rust 1.9.当使用一些代码并比较从标准输出中捕获的结果时,我注意到输出使用Linux行结束0x0A(10,LF)而不是windows 0x0D 0x0A(13 10,CR LF) .我试过以下:

println!("{} or {}  = {}", a, b, a | b);

print!("{} or {}  = {}\n", a, b, a | b);
Run Code Online (Sandbox Code Playgroud)

有没有办法强制Windows行结束?

She*_*ter 7

如果你查看实现println!,它非常简单:

macro_rules! println {
    ($fmt:expr) => (print!(concat!($fmt, "\n")));
    ($fmt:expr, $($arg:tt)*) => (print!(concat!($fmt, "\n"), $($arg)*));
}
Run Code Online (Sandbox Code Playgroud)

您可以复制 - 粘贴 - 修改此替换\n\r\n:

macro_rules! wprintln {
    ($fmt:expr) => (print!(concat!($fmt, "\r\n")));
    ($fmt:expr, $($arg:tt)*) => (print!(concat!($fmt, "\r\n"), $($arg)*));
}
Run Code Online (Sandbox Code Playgroud)

  • 你知道这是否是故意的?我完全可以想象一个`cfg`属性来切换`println`的实现,但我似乎回想起一个讨论,其中特定于平台的行为被视为可移植性问题的来源...... (4认同)