尝试执行以下代码时:
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次抛出异常,但之后工作正常......
任何想法? 谢谢!