2017-08-17 42 views
1

如何將包含換行符的字符串(&strString)寫入文本文件?文本文件的輸入/輸出期間的行結束轉換

C可以按原樣或通過fopen標誌,"w""wb"轉換'\n'到線符號的適當的端部對所述OS寫入文本之間切換。例如在Windows中,'\n'在I/O期間轉換爲"\r\n"

我該如何用Rust來達到這個目的?我在std::fs::File找不到相應的API。

+2

您希望轉換的範圍有多廣?從內存中的所有可能的行尾到文件中的系統行尾?閱讀文件時,你是否希望做相反的事情? Rust沒有像C那樣的「文本模式」文件,所以在寫入數據或讀取數據之前,你有責任去做。 – loganfsmyth

+1

*例如在Windows中,'\ n''在I/O期間轉換爲'「\ r \ n」'。如果您想從非Windows中寫入「Windows」文件,反之亦然?基於* current *平臺的行結尾是不可靠的,因此不是一個好主意。 – Shepmaster

回答

1

標準庫中沒有這樣的API(雖然可能有一個這樣的包)。將行寫入文件的最簡單方法是使用宏writeln!,並且它僅將\n用於換行符。

它可能被認爲(由Rust開發人員)不夠有用,因爲我非常確定現在\r\n僅用於Microsoft記事本兼容性。

曾經有相關write不是在Windows上使用CRLFissue,但得出的結論是:

原料io::File可能會默認情況下不處理它而是會需要一個包裝

(注意:因爲Rust 1.0不再是io::File,而是fs::File