2016-06-01 13 views
4

Ich benutze Rust 1.9 unter Windows 10. Wenn ich mit Code spiele und das von der Standardausgabe erfasste Ergebnis vergleiche, merke ich, dass die Ausgabe eine Linux-Zeilenendung 0x0A (10, LF) verwendet anstatt Windows 0x0D 0x0A (13 10, CR LF). Ich habe folgendes versucht:Gibt es eine Möglichkeit, print!/Println zu erzwingen! eine neue Windows-Zeile zu verwenden (CR LF)

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

print!("{} or {} = {}\n", a, b, a | b); 

Gibt es eine Möglichkeit, Windows-Zeilenendungen zu erzwingen?

+2

Alles, was gegen 'print (“! {} oder {} = {} \ r \ n ", a, b, a | b);'? – Kroltan

+1

Das Makro 'println!' [Führt keine Prüfungen für die Umgebung durch] (https://github.com/rust-lang/rust/blob/master/src/libstd/macros.rs#L118), wenn es hinzugefügt wird die neue Zeile leider. Es scheint also keine Flagge zu geben, die Sie einstellen können, damit alles so funktioniert, wie Sie es erwarten. Ich würde sagen, dass man "print!" Wie oben beschrieben manuell aufruft. –

+0

Yeah \ r \ n macht den Trick. Danke, daran hätte ich gedacht. Bitte mach eine Antwort und ich akzeptiere es. –

Antwort

7

Wenn Sie the implementation of println! Check-out, dann ist es ziemlich geradlinig:

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

Sie können copy-paste-modifizieren diese \n mit \r\n zu ersetzen:

macro_rules! wprintln { 
    ($fmt:expr) => (print!(concat!($fmt, "\r\n"))); 
    ($fmt:expr, $($arg:tt)*) => (print!(concat!($fmt, "\r\n"), $($arg)*)); 
} 
+4

Wissen Sie, ob dies beabsichtigt ist oder nicht? Ich könnte mir ein "cfg" -Attribut vorstellen, um die Implementierung von "println" zu wechseln, aber ich erinnere mich an eine Diskussion, in der plattformspezifisches Verhalten als Quelle von Portabilitätsproblemen angesehen wurde ... –

+0

@MatthieuM. Ich bin mir keiner Diskussion bewusst, leider. Persönlich bevorzuge ich ein einzelnes Verhalten über Plattformen hinweg. – Shepmaster

Verwandte Themen