どちらも「改行」を意味しますが、どちらが使用されるのはいつですか。
\r\n
はWindowsスタイル
\n
は[〜#〜] posix [〜#〜]スタイル
\r
は古いOS X以前のMacスタイル、現代のMac使用[〜#〜] posix [〜#〜]スタイル。
\r
はキャリッジリターンで、\n
は改行です。古いコンピューターでは、モニターがなく、プリンターしかありません。プログラムの結果をユーザーに出力するには、左から改行を見つめて印刷する場合は、Line Feedの\n
を取得する必要があります。 、および\r
for getCarriage return、これはWindowsプラットフォーム。
\ nは改行を意味します。これは、カーソルが次の行に移動する必要があることを意味します。
\ rはキャリッジリターンを意味します。これは、カーソルが行の先頭に戻る必要があることを意味します。
UnixおよびUnixプログラムは通常、改行のみが必要です(\ n)。
通常、WindowsとWindowsプログラムには両方が必要です。
\ nは改行のみ、\ r\nは改行とキャリッジリターンです(つまり、カーソルを左に移動します)。
これは、オペレーティングシステムのWindows(\ r\n)およびLinux(\ n)で改行がどのように表されるかです。
Unixでは、\ rはキャリッジリターン(CR)と\ nラインフィード(LF)であり、これらが一緒になってWindowsの改行識別子になり、Unixの改行識別子に置き換えます。
Windowsでは、\ rもCRですが、\ nはCRとLFの組み合わせです。つまり、効果的にCR + CR + LFをCR + LFに置き換えようとしています。あまり意味がありませんね。
「perldocperlop」から:すべてのシステムは、仮想「「\ n」」を使用して、「改行」と呼ばれる行末記号を表します。不変の物理的な改行文字のようなものはありません。オペレーティングシステム、デバイスドライバー、Cライブラリ、およびPerlがすべて共謀して保存しているのは幻想にすぎません。すべてのシステムが ""\r ""をASCII CRとして読み取り、 ""\n ""をASCIILFとして読み取るわけではありません。たとえば、Macではこれらが逆になり、ラインターミネータのないシステムでは、「 "\ n"」を印刷しても実際のデータが出力されない場合があります。一般に、システムの「改行」を意味する場合は「 "\ n"」を使用しますが、正確な文字が必要な場合はリテラルASCIIを使用します。たとえば、ほとんどのネットワークプロトコルは、ラインターミネータにCR + LF( ""\015\012 ""または ""\cM\cJ "")を期待し、優先します。多くの場合、 ""\012 ""だけを受け入れますが、 ""\015 ""だけを容認することはめったにありません。ネットワークに ""\n ""を使用する習慣を身につけると、いつかやけどを負う可能性があります。
'\ n'はUnixのデフォルトであり、 '\ r\n'はWindowsのデフォルトです。
異なるオペレーティングシステムは、異なる方法で改行を処理します。これが最も一般的なものの短いリストです:DOSとWindows
彼らは、改行が2つの文字の組み合わせ、つまり '\ r\n'(または13の後に10が続く)であることを期待しています。
Unix(したがってLinuxも)
Unixは、単一の「\ n」を使用して改行を示します。
マック
Macは単一の「\ r」を使用します。
そのため、フォルダパスなどを使用しているときに、アプリをWindowsからMacに移植すると、問題が発生します。
違いはオペレーティングシステムによって異なります。Windowsでは改行文字は\r\n
ですが、Linuxでは\n
です。MacOSXには\r
しかありません。実際には設計者の問題です。 OSはそれを
C#では、Environment.NewLineを使用できます。