シミュレーションの最後に、データファイルに追加された行としていくつかの結果を書きたいと思います。私が使用しているコードは、outFile
がstd::ofstream
として正しく割り当てられていて、がまだ存在しないファイルへの有効なパスを含むstd::string
であると仮定し、そのファイルに出力される変数がちょうどint
シミュレーション中に値を取得するタイプ。`ofstream`の使用はファイルの作成も書き込みもしません。
outFile.open(output_file.c_str(), std::ios::out | std::ios::app);
outFile << num_nodes << ", " << tot_s << ", " << tot_c << ", " << tot_d << std::endl;
outFile.close();
私はそれが正しくofstream::is_open()
機能でファイルを開くかどうかをチェックしました、それはfalse
を返します。しかし、私は理由を理解できません。私は多くの異なるファイル名とディレクトリパスで試してみましたが、それらはすべてチェックされており、有効です(打ち間違いはありません)
書き込まれているファイルは、すべての時間ファイル、私はアクセス許可の問題になる可能性があります表示されません。権限の問題であれば、どうすれば確認できますか?
それ以外の場合、ファイルに書き込むことを妨げる原因は何ですか?
を追加しました:
はコメントにフォローアップ、perror()
への呼び出しを追加した後、それは「そのようなファイルやディレクトリはありません」というエラーが表示されます。問題のファイルのパスは次のとおりです。
/home/ely/Desktop/Evolutionary_Dynamics/GamesOnCycle/data/test.data
私は、このファイルを作成することにしたい、そしてそのパス内のすべてのディレクトリが存在し、それがすべてなど、正しく入力だ、とGamesOnCycleフォルダとは奇妙な権限の問題が存在しませんまたはそのデータサブフォルダ。それはLinuxシステム(Ubuntu 11.04)であることに注意してください。フォワードスラッシュはファイルパスに対して正しいですが、C++にはw.r.tを持っていなければなりません。ファイルパス。
を参照してください。それでもエラーメッセージを取得するためにofstream.open後にそれを使用することができ、Cスタイルです。 – keety
パスで二重バックスラッシュを使用していますか? – chris
これはLinuxシステム上にあるので、パスにはすべてスラッシュが付きます。これは、ユーザー入力から読み込んだときにファイル名を正しく表示するので、少なくとも 'std :: string'に正しいパスがあります。 – ely