私はWindowsで動作するコードを書いており、後でLinuxのプログラムへの入力となるテキストファイルを出力しています。このプログラムは、LFではなくCR + LFの改行を持つファイルが与えられたときに正しく動作しません。C++はCR + LFからLFに改行
私はdos2unixのようなツールを使用できることを知っていますが、余計な手順を省略したいと思います。 Windowsの代わりにLinuxの改行を使うためにC++プログラムをWindowsで入手することは可能ですか?
私はWindowsで動作するコードを書いており、後でLinuxのプログラムへの入力となるテキストファイルを出力しています。このプログラムは、LFではなくCR + LFの改行を持つファイルが与えられたときに正しく動作しません。C++はCR + LFからLFに改行
私はdos2unixのようなツールを使用できることを知っていますが、余計な手順を省略したいと思います。 Windowsの代わりにLinuxの改行を使うためにC++プログラムをWindowsで入手することは可能ですか?
はい、改行変換を停止するには、ファイルを「バイナリ」モードで開く必要があります。
どのように行うかは、ファイルを開く方法によって異なります。
fopen
を使用する:OK
std::ofstream outfile("filename", std::ios_base::binary | std::ios_base::out);
、これはあなたが聞きたいものはおそらくありませんが、ここでは、この私の経験に基づいて私の$ 0.02です:ofstream
を使用して
FILE* outfile = fopen("filename", "wb");
を
異なるプラットフォーム間でデータを渡す必要がある場合、長期的には、どの改行がどのようなものか気にしないフォーマットを使用する方がよいでしょう。テキストファイルの場合、ユーザーはそれらを混乱させることがあります。行の終わりを邪魔してアプリケーションが失敗する場合、これはサポート集中アプリケーションになります。
これで、XMLに切り替えました。サポート仲間をもっと幸せにしました。
もし私が使用しなければならないフォーマットを選択できるのであれば..... *中空の笑い*。 – GiantCowFilms
合意。バイナリとしてストリームを開き、変換は行われません。このようなストリームへの '\ n'またはstd :: endlの出力は、改行のみをもたらす。 – Clifford