1

Visual Studio2008でC++で記述していますが、他のライブラリに問題があります。これらのライブラリは、txtファイルで生成した行末(EOL)を受け入れません。

でファイルを書いているときにそれを変更するにはどうすればよいですか?

std::ofstream myFile;
myFile.open("traindata.txt");
myFile << "stuff" << endl;
// or 
//myFile << "stuff" << '\n';
myFile.close();

編集2:

わかりました。コードを間違えました。EOLの前に空白を入れるために、反復ごとに「0」を追加していました。

悪いことで。君たちは正しかった。手伝ってくれてありがとう。

4

4 に答える 4

4

\ n行末シーケンスが発生しないようにすることは可能ですか?を使用してファイルを開きますstd::ios_base::binary:これにより、変換が正確にオフになります。...そして、std::endl本当にストリームをフラッシュしたい場合を除いて、使用しないでください。

std::ofstream myFile("traindata.txt", std::ios_base::binary);
myFile << "stuff\n";

close()成功したことを確認したい場合を除いて、通常はこれも不要です。

于 2012-01-05T21:36:57.353 に答える
0

C ++ライブラリが行末を自動的に変換しないようにするには、ファイルストリームをバイナリモードで開く必要があります。

myFile.open("traindata.txt", std::ios_base::out|std::ios_base::binary);

これにより、C++ライブラリが'\ n'をOS固有のEOLシンボル(WindowsではCR-LF)に変換できなくなります。

于 2012-01-05T21:40:27.517 に答える
0

notepad++をダウンロードしてください-問題を解決できるはずです。

またはdos2unixunix2dos_cygwin

于 2012-01-05T22:20:33.537 に答える
-1

myfile << "\r\n"Windowsスタイルのエンディングまたはmyfile << "\n"UNIXスタイルに使用します。

于 2012-01-05T21:33:54.323 に答える