2017-08-17 5 views
1

テキストファイルに改行を含む文字列(&strおよびString)の書き込み方法は?であるかfopen旗、"w"または"wb"経由でOS用のラインシンボルの適切な終わりに'\n'を変換するようテキストファイルの入力/出力中の行末変換

Cでは、書き込み、テキストを切り替えることができます。たとえば、Windowsでは'\n'はI/O中に"\r\n"に変換されます。

どうすればRustでこれを達成できますか? std::fs::Fileに対応するAPIが見つかりません。

+2

変換はどれくらい広がっていますか?メモリ内のすべての可能な行末から、ファイル内のシステム行の終わりまで?あなたはファイルを読むときに逆をすることを望んでいますか? RustはCのような "テキストモード"のファイルを持っていないので、データを書く前にそれを読んだり読んだりするのはあなたの責任です。 – loganfsmyth

+1

* Windowsの場合、\ n "はI/O時に\" \ n ""に変換されます。* Windows以外のファイルから "Windows"ファイルを書きたい場合、 ? *現在のプラットフォームに基づいて行末をベースにするのは、あまりにも信頼できないので、良いアイデアはありません。 – Shepmaster

答えて

1

標準ライブラリにはこのようなAPIはありません(しかし、これにはクレートがあるかもしれません)。ファイルに行を書き込む最も簡単な方法は、writeln!マクロであり、改行には\nしか使われません。

おそらく(Rustの開発者によって)役に立たないと思っていたのは、私が今のところ\r\nがMicrosoftメモ帳との互換性のためだけに使用されていると確信しているからです。そこ

は一度Windows上CRLFを使用していないwriteに関連issueだったが、それがあると結論付けました:生io::Fileはおそらく、デフォルトでそれを処理しませんが、代わりにラッパー

を必要とする

(注:Rust 1.0以降はではなく、fs::File

関連する問題