我添加了一些命令来在给定类的方法中生成输出文件。这非常有效,输出文件是在执行期间生成的。既然我对代码进行了重大更改(但根本不对输出文件命令),我不再正确生成输出了吗?这来自哪里?我改变的代码似乎没有输出命令的任何连接。构造函数看起来像
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") ;
}
其中member 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;
}
您还有其他信息
答案 0 :(得分:1)
open
之后的流的状态是什么?你几乎总是
想检查open
是否成功(以及是否全部成功)
关闭后写入成功)。你可能会尝试类似的东西:
osOutput.open(...);
if ( !osOutput.is_open() ) {
std::cerr << "Cannot create ..., error was: " << strerror( errno);
}
这将为您提供有关错误的更多信息。