获取异常“basic_filebuf :: underflow错误读取文件”

时间:2013-11-19 09:39:12

标签: c++ linux ifstream

尝试执行以下代码时:

void XMLRulesReader::ReadRulesFromFile(vector<Rule> *SysRulesP, vector <TagInRule> *ConnectedTagsP, vector <TagsGroup> *SysTagGroups)

{

    xml_document<> doc;
    xml_node<> * root_node;
    int value=0;
    string fileName;
try
{

    // Read the xml file into a vector
    fileName = "/home/root/LogiTrackV2/Log/Rules.xml";


    ifstream theFile (fileName.c_str());

    if (theFile.is_open())
    {

       vector<char> buffer((istreambuf_iterator<char>(theFile)),    
                istreambuf_iterator<char>());       
       buffer.push_back('\0');

     // Parse the buffer using the xml file parsing library into doc 
       doc.parse<0>(&buffer[0]);

    // Find our root node
      root_node = doc.first_node("rules");

      if (root_node==NULL)
        return;


      for (xml_node<> * rule_node = root_node->first_node("rule"); rule_node;
                rule_node = rule_node->next_sibling("rule"))
      { 
        AddNewRule(rule_node, SysRulesP, ConnectedTagsP,SysTagGroups);          
      }

      theFile.close();


    }


}
catch (exception& e)
{



    throw e;
}

}

我遇到异常:执行该行时出现“basic_filebuf :: underflow错误读取文件”: 向量缓冲区((istreambuf_iterator(theFile)),istreambuf_iterator());

事情是,第一次调用上面的函数时,它被执行得很好,但是在第二次被调用时它会抛出上面的异常。 另一个奇怪的事情是,如果我多次运行该程序,它会在前3-4次抛出异常,但之后工作正常......

任何想法? 谢谢!

0 个答案:

没有答案