リマインダー-\ r \ nまたは\ n \ r?


390

思い出せない。それでは、旧式のASCII行を適切に終了する正しい方法は何ですか?


11
これを行う場合は、必ずバイナリモードでファイルを開いてください。それ以外の場合、標準のC / C ++ファイルストリームは "\ n"(テキストファイルの場合(デフォルト))をプラットフォーム固有の行末シーケンス(ELS)に変換します。したがって、Windowsの「\ r \ n」は、物理ディスクの「\ r \ r \ n」に変換されます。注:C / C ++を使用してファイルを読み取るだけの場合は、ファイルから読み取ったときにELSが「\ n」に変換されるため、気付かないでしょう。
マーティンヨーク

@Martin-私は.netにいて、(この例では)File.AppendAllTextを "\ r \ n"で使用しています。ファイルを調べただけで、末尾に\ r重複はありませんこの線。マジック?
DanielMošmondor2011年

@ダニエル:私はもっと具体的だったはずです。C / C ++のストリーム。ファイルに関連付けられテキストモードで開かれ場合。また、ファイルの見方にも依存します(hexeditorを使用)。
マーティンヨーク

@Martin-16進モードでPSPadを使用...
DanielMošmondor2011年

1
従来のキーボードでは、EnterキーはReturnキーと呼ばれていました。したがって、戻りが最初に来て、ラインフィードがそれに応じて生成されました。あまりにも多くの歴史があると、それはすべて明白です。
Mark Ransom

回答:


1084

r etur n」という言葉を覚えておきます。rはnの前に来ます。


116
そして、使用する言葉であることを覚えておくリターン \ rがあることを覚えて、キャリッジリターン。「Return」がMacキーボードのキーの名前であることを忘れないでください。そうしないと、後でPCキーボードを見て「Enter」と呼ばれるキーが表示され、文字の順序が間違ってしまう可能性があります。
ロブ・ケネディ

3
@デビッドしかし、私はそれの効果を思っていた\n\rし、\r\n同じである、彼らは同じ効果をしないのですか?違いがわかりますか?
Mr.Anubis

7
@ Mr.Anubis 特定のドットマトリックスプリンターを使用している場合、コマンドの順序は重要ではないため、違いはありません。ただし、一部のプリンターでは、余分な空行が表示されるか、行送りがまったく行われません。そして、上記のすべてがテキストエディタに適用されます-それらは混乱し、TextStreamクラスは病気になります。ご注文は、IS重要。:)
DanielMošmondor2012年

12
@DanielMošmondorまたは、順序がimpoRtaNtであることを覚えておいてください。または、SOで尋ねたところ、誰かがあなたに後で忘れたRemiNderを渡したということです。または、rとnの順序が逆になっているため、リマインダーとして姓を使用できないこと:)
Daniel Daranas

5
@RobKennedyははは、私がここに来て戻りについて読んだことを知って、「すごい!」と思った。次に、あなたのコメントを読みます。今度は、見るべきではないキーを思い出せなくなります。「Enter」キーを見ると、「ここで何か問題があります」と思います。
Wayne Uroda

53

C#を使用している場合はEnvironment.NewLine、MSDNに応じてを使用する必要があります。

非UNIXプラットフォームの場合は「\ r \ n」を含む文字列、UNIXプラットフォームの場合は「\ n」を含む文字列。


46
実際、この種のことはあなたが何をしているかに依存します。プレーンテキストをコンソールまたはローカルで使用するファイルに出力するだけの場合は問題ありませんEnvironment.NewLine。ただし、明確に定義された形式で記述している場合は、形式によって改行も定義される場合があります。たとえば、HTTPプロトコルでは、プラットフォームに関係なく、ヘッダーなどの行終端記号として使用する必要があると記載さ\r\nれています。
Matti Virkkunen、2011年

3
ええ、これは本当に悪いアドバイスです。
IvanP

これが、Webメッセージをエスケープし、ユニットテストをビルドして、\ r \ n(windows)、\ r(mac)、\ n(linux)が\ r \ nとしてWebサーバーに適切に送信することを確認する必要がある理由です。
TamusJRoyce 2017

37

新しい行はOSによって異なります。

DOS & Windows: \r\n 0D0A (hex), 13,10 (decimal)
Unix & Mac OS X: \n, 0A, 10
Macintosh (OS 9): \r, 0D, 13

詳細はこちら:https : //ccrma.stanford.edu/~craig/utility/flip/

疑問がある場合は、フリーウェアの16進ビューア/エディタを使用して、ファイルが新しい行をどのようにエンコードするかを確認してください。

私にとっては、私は私が覚えているヘルプに次のガイドを使用します0D0A = \ rを\ nはCR、LF = CA RR iage R ETURN、李n個の電子フィード


7
不思議なことに、私が知っているこれらの人々の一人です0D0A心で、まだ混乱\rして\n
Nyerguds 2013年

1
または、私は\ rがキャリッジリターンで\ nがラインフィードであることを覚えています...それは単にそれらの順序を覚えていないだけなので、どれが0Dでどれが0Aであるかを覚えるのに役立ちません;)
Nyerguds

20

シーケンスはCR(キャリッジリターン)-LF(ラインフィード)です。ドットマトリックスプリンターを覚えていますか?丁度。したがって、正しい順序は\ r \ n


これが最も論理的な答えだと思います
David Snabel-Caunt

12
LF + CRは、プリンターで同じCR + LFを実行します。
池上2011年

10
同意しない、@ David。(以降、そのことについて、またはタイプライター単にドットマトリックスプリンタのことを考えて、彼らがしているリターンにキャリッジを持っているものを)十分ではありません。それらがどのように機能するかについての基本的な情報だけで、ラインの最初に戻る前か後にペーパーを進めるかどうかが重要であると考える理由はありません。\ r \ nと\ n \ rはどちらも用紙を同じ位置に配置します。
ロブ・ケネディ

すべてのプリンターではなく、ほとんどのプリンターで@ikegami 。また、その動作を構成するDIPスイッチも備えていました。:)
DanielMošmondor2012年

5
キャリッジリターンの後にラインフィードを配置する理由の1つは、必要な合計時間を短縮することです。つまり、ヘッドが用紙の左端に戻っている間に、プラテンが1行のインデックスを作成できます。長い方の操作が最初に開始されるため、操作全体が完了するまでに長い時間を要する時間で完了します。私たちはそのような理由で多くのことをしました。... 110ボーで数百の行を待っていると想像
ジェリー・アンドリュース

8

どの.NET言語でEnvironment.NewLineも、望ましいでしょう。


定数文字列には機能しません。必要に応じて、定数を使用せずに静的文字列を使用することをお
勧めし

5

これを手動で行う場合は注意してください。
実際、私はこれをまったく行わないことをお勧めします。

実際には、プラットフォーム固有の回線終端シーケンスLTSについて話している。

ファイルをテキストモード(つまり、バイナリではない)で開くと、ストリームは "\ n"をプラットフォームに適したLTSに変換します。次に、ファイルを読み取るときにLTSを「\ n」に変換します。

その結果、「\ r \ n」をWindowsファイルに出力すると、物理ファイルに「\ r \ r \ n」というシーケンスが表示されます(16進エディタで確認してください)。

もちろん、プラットフォーム間でファイルを転送する場合、これは本当に大変です。

これで、ネットワークストリームに書き込む場合は、手動でこれを行います(ほとんどのネットワークプロトコルがこれを具体的に呼び出しているため)。しかし、ストリームが解釈を行わないようにします(バイナリモードが適切でした)。


4

\r\n Windowsでは問題なく動作します。


シングル\nは、最新バージョンのメモ帳を含め、Windowsでも問題なく機能します。
アンドレ・キャノン

OSごとに異なるエンディングを使用しているため、現代のエディターは行末を検出すると思います。
David Snabel-Caunt、2011年

1
実際にはそうではありません:これをWindowsでファイル(テキストモードで開いたstd C / C ++ファイル)に印刷すると、物理ファイルには「\ r \ r \ n」が含まれます(16進エディターで確認します)。読み返すと、「\ r \ n」は単一の「\ n」に変換されます。
マーティンヨーク

2
実際、@ DavidCaunt、試してみたところ、\ n Win8のメモ帳では機能しません。
philk 2014年

4

ウィキペディアから (あなたはその記事であなたのOSに正しいものを読むことができます):

ASCIIまたは互換性のある文字セットに基づくシステムでは、LF(ラインフィード、 '\ n'、0x0A、10進数で10)またはCR(キャリッジリターン、 '\ r'、0x0D、10進数で13)を個別に使用するか、CRの後にLF(CR + LF、 '\ r \ n'、0x0D0A)。


3

\r\n

それは私が使ったタイプライターの反対なのでそれを覚えていると言うのは奇妙です。
まあそれが正常だったら、覚える必要はなかった...:-)

ウィキペディアのタイプライター *ウィキペディアからの画像

タイプライターでは、改行を完了するときにキャリッジリターンレバーを使用します。その前に、ドラムを回転させる前に改行し、その後、キャリッジリターンを手動で操作できるようにします。

freesound.orgこのレコードから、最初の紙送りの音を聞くことができます。また、ドラムのラインサウンドの終わりのベルの警告の後、終わりから-1:03秒あたりで、その後に聞こえます。キャリッジリターンの1つ。


2

C#を使用している場合、なぜ使用しないのEnvironment.NewLineですか?(私はあなたがいくつかのファイルライターオブジェクトを使用すると仮定します...ちょうどそれを渡すと、Environment.NewLineそれは正しいターミネーターを処理します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.