1

私はLinuxが初めてで、ファイルを作成して何かを書きたいと思っています。

エラーは発生しませんが、コードはファイルを作成しません...何が欠けていますか?

#include <iostream>
#include <fstream>

int main(){
    std::ofstream out("/Home/peter/Dropbox/C++/linux/data.dat", std::ios::out | std::ios::binary);
    if(!out)
        std::cout << " File isn't open\n" << std::endl;
    char s = 'a';

    for(int i = 0; i<100; i++)
        out.put(s);

    return 0;

}
4

3 に答える 3

6

out.close()プログラムの最後に追加する必要があります。これにより、書き込みバッファがフラッシュされ、適切に書き込まれたことが保証されます。

また、そのディレクトリにファイルを作成および書き込むためのアクセス許可が実際にある (というよりも、プログラムが持っている) ことを確認してください。

最後に、書き込み先のパスが実際に正しいことを確認してください。@Adamがコメントで指摘したように、おそらく使用するつもりであり、使用/home/...しないつもりでした/Home/...

于 2013-07-25T21:29:50.733 に答える
2

スクリプトをコピーして貼り付けましたが、パスを変更したところ、コードは正常に実行されました。out.close()ファイルの処理が完了したら、ストリームを閉じるために使用することをお勧めします。

ファイルにストリーム演算子を使用して書き込むこともできます。

for( int i = 0; i < 100; i++ )
  out << s;
于 2013-07-25T21:32:53.997 に答える
1

out.put(s);に変更out << s;

次に、ファイルとストリームの操作が完了したら、それらを閉じることをお勧めします。不要なメモリ リークを防ぎます。out.close()戻る前、またはファイルの操作が終わったときに入れてください。

于 2013-07-25T21:38:06.350 に答える