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 回答