2011-01-27 15 views
4

私は十分だと思っていたでしょう。しかし、CRLF0x0D0A)のポイントは何ですか?CR0D)を簡単に使用できますか?通常、私は、文字列(C++)を使用していたときに、私はこれを実行します。キャリッジリターンと改行の両方を使用する点は何ですか?

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)を意味します。


EDIT:これはProgrammers.SEにする必要がありますか?

+5

C++では、std :: endlを使用することはできません。 –

+0

CRLFを実行するポイントは、Windowsユーザー向けです。 – BoltClock

+1

@PaulR:endlの使用は、\ nとflushingの使用と同じです。 endlには移植性やその他の利点はありません。 –

答えて

14

これらのコードはすべて古いTeletypeマシンから取得したことに注意してください。これらは効果的なタイプライターでした。紙をライン(ラインフィード)で前進させるだけでなく、プリントヘッド(キャリッジ上)を紙の左側(キャリッジリターン)に戻す必要がありました。

+1

私はいつも不思議に思ったが、決して尋ねなかった – tbridge

0

これはWindows上でのカスタムなので、Windowsで両方を使用します。それは簡単です。しかし、あなたはWindows用のファイルに対してのみ両方を書きます。

1

Windows/Unix /旧Macシステムでは、バイナリファイルではなく新しい行をテキストファイルに書き込む方法がそれぞれ異なります。ウィンドウの下でプログラミングしているならば、バイナリモードでは、CRLFのエンディングを読んで(そしておそらく書いておきたい)。 Unixのようなシステムでは、LFだけになります。

あなたが自分のデータフォーマットを扱うなら、あなたがどのように選択するかは重要ではありません。それは本当にあなたが文字列で何をしたいのかだけに依存し、どこから取得しましたか。

1

UNIXやOSXのようなシステムでは、改行を使用するだけで、DOSはテレタイプのマシンと互換性を持たせるために追加のキャリッジリターンを使用し、Windowsはアーキテクチャを継承しました。

関連する問題