2012-04-05 25 views
0

特定のクラスのメソッドで出力ファイルを生成するコマンドをいくつか追加しました。これは完璧に機能し、実行中に出力ファイルが生成されました。私はコードに大きな変更を加えましたが(出力ファイルコマンドにはまったくではありません)、出力を正しく生成していませんか?これはどこから来ることができますか?変更されたコードは、出力コマンドとの関連がないようです。コンストラクタは、メンバーブールのログモードは、コメントがアクティブであるかどうかを判断C++ iostream - 出力ファイルが作成されていません

solverMethod::solverMethod(solverInput*inp_):solverMethod(inp_) 
{ 
ndim = m_input->getNbParams(); 

bestFuncEval = DBL_MAX; 

NMAX = m_input->getMaxIter(); 

FTOL = m_input->getTolerance(); 

NITER = 0; 

logMode = true; 

osOutput.open("F://Output.txt") ; 

}

のように見えます。異なる方法で

は、私がコメント

を生成するために

if(logMode) 
{ 
    osOutput << "\n"; 
    osOutput << " - - BUILD "; 
    osOutput << "\n"; 


    osOutput << "INITIAL"; 
    osOutput << "\n"; 
    for(int k=0;k<npts;k++) 
    { 
     for(int j=0;j<m_ndim;j++) 
     { 
      osOutput << s_[k][j] ; 
      osOutput << ", "; 
     } 
    } 
    osOutput << "\n"; 
} 

ようなコードを持っているし、私は主要なメソッドの最後にあります。

// .... 


osOutput.close(); 
return true; 
} 

あなたは、それ以上の情報を持っていますか

+1

私はこれを明らかにする、あなたはコンストラクタでファイルを開きますが、いくつかの他の関数で閉じる?その関数を呼び出すと(ファイルを閉じる)、ファイルに再度書き込もうとしますか? –

+1

完全な例がなければ、この質問に答えることは難しいです。あなたのコードから、出力ファイルの管理(つまり、開閉を意味する)に関係しないすべてのものを投げてみてください。これにより、ここに投稿できるサイズにコードが縮小されます。 –

+1

'solverMethod :: solverMethod(solverInput * inp _):solverMethod(inp_)' - これはうまくいくのでしょうか? "solverMethod"という名前のメンバーか、 "solverMethod"という名前の基本クラスを持っていますか?私がg ++でしようとすると、エラーが表示されます。どのコンパイラを使用していますか? – vstm

答えて

1

open以降のストリームのステータスはどのくらいですか?ほとんどの場合、 は、openが成功したかどうか(そして、終了後にすべての の書き込みが成功したかどうかを確認したい)。

osOutput.open(...); 
if (!osOutput.is_open()) { 
    std::cerr << "Cannot create ..., error was: " << strerror(errno); 
} 

これは、何が間違っているかについての詳細情報を提供します。

関連する問題