2009-10-08 11 views
15

私はWindowsで動作するコードを書いており、後でLinuxのプログラムへの入力となるテキストファイルを出力しています。このプログラムは、LFではなくCR + LFの改行を持つファイルが与えられたときに正しく動作しません。C++はCR + LFからLFに改行

私はdos2unixのようなツールを使用できることを知っていますが、余計な手順を省略したいと思います。 Windowsの代わりにLinuxの改行を使うためにC++プログラムをWindowsで入手することは可能ですか?

答えて

23

はい、改行変換を停止するには、ファイルを「バイナリ」モードで開く必要があります。

どのように行うかは、ファイルを開く方法によって異なります。

fopenを使用する:OK

std::ofstream outfile("filename", std::ios_base::binary | std::ios_base::out); 
+1

合意。バイナリとしてストリームを開き、変換は行われません。このようなストリームへの '\ n'またはstd :: endlの出力は、改行のみをもたらす。 – Clifford

-1

、これはあなたが聞きたいものはおそらくありませんが、ここでは、この私の経験に基づいて私の$ 0.02です:ofstreamを使用して

FILE* outfile = fopen("filename", "wb"); 

異なるプラットフォーム間でデータを渡す必要がある場合、長期的には、どの改行がどのようなものか気にしないフォーマットを使用する方がよいでしょう。テキストファイルの場合、ユーザーはそれらを混乱させることがあります。行の終わりを邪魔してアプリケーションが失敗する場合、これはサポート集中アプリケーションになります。

これで、XMLに切り替えました。サポート仲間をもっと幸せにしました。

+0

もし私が使用しなければならないフォーマットを選択できるのであれば..... *中空の笑い*。 – GiantCowFilms