C# と C++ の両方を使用したコードでファイルにアクセスしていました。ファイルをメモ帳で開くと、次のようになります (左側に 1 つの整数があり、残りの数字は 2 倍です)。
しかし、同じファイルをワードパッドで開くと、次のようになります (倍精度浮動小数点数の隣に整数が 1 つずつあります)。
なぜ彼らは違うように見えるのですか?
ファイルで改行がエンコードされる方法に関係しています。Windows では、改行は 2 文字 ( \r\n
) で構成されるものとして認識されますが、他の一部のオペレーティング システム、つまり Unix ベースのオペレーティング システムでは、\n
またはのみが使用され\r
ます。ワードパッドは両方の改行タイプを認識できるほどスマートですが、メモ帳はそうではありません。
メモ帳と WorkPad は \r\n の認識が異なるため
メモ帳とワードパッドは「改行」の扱いが異なります。一方は のみを受け入れ\n
、もう一方は\r\n
「改行」を認識する必要があります (一部は で問題ありません\n\r
)。
同様のことが他の多くの編集者にも当てはまります。つまり、Visual Studio でファイルを開こうとすると、「Unix の改行を Windows の改行に変換しますか」などの質問が表示される可能性があります。
WriteLine
手動で追加するのではなくC# を使用してファイルを書き込む場合、\n
または少なくともEnvirnment.NewLineを使用してストリームに「改行」を書き込みます。
同様に、C++ では、メモ帳またはそのようなシーケンスを必要とする他のエディターでファイルを開く必要がある場合、単に "\n" の代わりに "\r\n" と書くことができます (ほとんどのエディター/ビューアーはどちらでも問題ありません)。
メモ帳とワードパッドは異なる方法でファイルを読み取るため、このファイルは両方とも異なる方法で読み取られるように書かれているようです...