29

Windows の改行マーカーはCR+LF、Unix ではLF.

のようなものを使用するとConsole.Write("line1\nline2");、なぜ「適切に」機能し、2 行になるのでしょうか。私はこれが機能しないことを期待して\nおり、の組み合わせのみ\r\nが機能します。

4

6 に答える 6

33

'\n'改行文字です。従来、これにより、プリンターは用紙を 1 行上に巻き上げていました。'\r'はキャリッジ リターン文字で、従来はプリンタ ヘッドが用紙の左端に移​​動していました。

この方法で文字を解釈するプリンターとコンソールでは、出力は次のようにline1\nline2なります。

line1
     line2

多くのコンソール (およびエディター) は、'\n' を解釈して、新しい行を開始し、その新しい行の先頭にカーソルを配置することを意味します。それがここに表示されます。

特定の定数をハードコーディングするのではなく、Environment.NewLineを使用する必要があります。

于 2012-04-05T19:15:00.250 に答える
2

ファイル エンコーディング !=Console解釈。

言い換えれば、CR+の "Windows 標準" はLFファイルに存在しますが、コンソール ウィンドウでは適切なキャリッジ リターンと改行の解釈が行われるのはLF, またはだけです。\n

于 2012-04-05T19:15:16.810 に答える
1

私の経験では、WriteLine() を使用してコンソールに出力すると、\n エスケープ文字が受け入れられます。StreamWriter を使用して WriteLine() を呼び出すと、\r\n と入力して新しい行に移動する必要があります。コンソールは、キャリッジ リターン \r なしで \n エスケープ文字を受け入れるようにプログラムされていると思います。

于 2012-04-05T19:23:58.407 に答える
0

\n は改行文字です。*nix システムと Windows システムの両方で、2 行を作成する必要があります。\r は改行で、筆記具を行頭に移動します。

最新のコンソール/エディタのほとんどは、\n を \r\n と解釈できるほど回復力があります

于 2012-04-05T19:23:22.760 に答える