4

1つで十分だと思いました。しかし、単純に()を使用できる場合、()を実行する意味は何CRLFですか?通常、文字列(C ++)を使用しているときはいつでも、次のようにします。0x0D0ACR0D

myString = "Test\nThis should be a new line!\nAnother linefeed.";

注:これを読んでいるC ++以外のプログラマーにとって"\n"は、改行(0x0A)です。

しかし、私は本当にこれを行う必要があります:

myString = "Test\r\nThis should be a new line!\r\nAnother carriage return/linefeed pair.";

注:"\r"キャリッジリターン(0x0D)を意味します。


編集:これはProgrammers.SEにあるべきですか?

4

4 に答える 4

15

これらのコードはすべて古いテレタイプマシンからのものであることを忘れないでください。これらは事実上タイプライターでした。用紙を1行進める(改行)だけでなく、プリントヘッド(キャリッジ上)を用紙の左側に戻す(キャリッジリターン)必要もありました。

于 2011-01-27T23:00:45.723 に答える
1

Windows / Unix /古いMacシステムには、テキストファイル(バイナリファイルではない)に新しい行を書き込む方法がそれぞれ異なります。Windowsでプログラミングしている場合は、バイナリモードで、CRLFエンディングを読み取ります(おそらく書き込みたいと思います)。UNIXライクなシステムでは、それは単なるLFになります。

独自のデータ形式を扱う場合は、どちらを選択するかは重要ではありません。それはすべて、文字列で何をしたいのか、どこから取得したのかによって異なります。

于 2011-01-27T22:58:11.667 に答える
1

UNIXやOSXなどの一部のシステムはラインフィードのみを使用し、DOSはテレタイプマシンとの互換性を保つために追加のキャリッジリターンを使用し、Windowsはアーキテクチャを継承しました。

于 2011-01-27T22:58:37.610 に答える
0

これはWindowsのカスタムであるため、Windowsでは両方を使用します。とても簡単です。ただし、両方を書き込むのは、Windows宛てのファイルのみです。

于 2011-01-27T22:54:31.807 に答える