-2

以下是我调用过的函数!如我所见,它打开文件一次!但我不明白为什么它会返回“打开的文件太多”。它与我的矢量大小有什么关系吗?

void WriteResult(std::vector<result*> result)
{
    std::string tempStr = "";
    std::string outPath = "/my/path/similarityScores.txt" ;
    for ( int i=0; i< result.size(); i++)
        tempStr += (*result[i]).GetResult();
    outStream.open(outPath.c_str(), std::ios::app );
    if (!outStream)
        std::cout << std::strerror(errno) << '\n';  
    outStream << tempStr;
    outStream.close();
}
4

2 回答 2

0

Too many open files是计算机的问题(每个用户和一次可以打开多少文件的全局限制)您可以使用诸如lsof查看当前打开的文件之类的程序。

尝试重新启动您的机器并再次运行该程序。

于 2011-10-04T07:03:33.870 回答
-3

尝试

for ( int i=0; i< result.size(); i++)
**{**tempStr += (*result[i]).GetResult();**}**
outStream.open(outPath.c_str(), std::ios::app );

顺便说一句,考虑用“for_each”stl方法替换“for”

于 2011-10-04T06:49:06.523 回答