0

特定のクラスのメソッドで出力ファイルを生成するコマンドをいくつか追加しました。これは完全にうまく機能し、実行中に出力ファイルが生成されました。コードに大きな変更を加えたので(ただし、出力ファイルコマンドにはまったく変更しませんでした)、出力が正しく生成されなくなりましたか?これはどこから来るのですか?私が変更したコードは、コマンドを出力するための接続がないようです。コンストラクタは次のようになります

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") ;

}

ここで、メンバーboolean logModeは、コメントがアクティブかどうかを決定します。

さまざまな方法で、私は次のようなコードを持っています

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;
 }

さらに詳しい情報はありますか

4

1 に答える 1

1

後のストリームのステータスはどうなりopenますか?ほとんどの場合、open成功したかどうか(および、すべての書き込みが終了後に成功したかどうか)を確認する必要があります。次のようなことを試してみてください。

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

これにより、何が問題なのかについての詳細情報が得られます。

于 2012-04-05T07:31:28.297 に答える