Rapidxml写入内存错误

时间:2015-04-20 16:58:30

标签: rapidxml

我不明白为什么,虽然BBBString对于每个(i,j)具有不同的内容,但在xml上节点“BBB”始终具有相同的值(对应于最后一对(i,j))。其他节点具有确切的内容!

for (unsigned short int i = 0; i < input1.size(); i++)
    {
        for (unsigned short int j = 0; j < input1[i].size(); j++)
        {
            count = 0;
            max = input1[i][j].size();
            iter = input1[i][j].begin();
            while (count < max)
            {
                rapidxml::xml_node<> * new_node = doc.allocate_node(rapidxml::node_element, "Element");
                new_node->append_node(doc.allocate_node(rapidxml::node_element, "AAA", (*(*iter)).getName().c_str()));

                std::string BBBString = boost::lexical_cast<std::string>(input4[i]);
                std::cout << "BBBString = " << BBBString << std::endl;
                new_node->append_node(doc.allocate_node(rapidxml::node_element, "BBB", BBBString.c_str()));
                new_node->append_node(doc.allocate_node(rapidxml::node_element, "CCC", input2[i].getName().c_str()));
                new_node->append_node(doc.allocate_node(rapidxml::node_element, "DDD", input3[j].getName().c_str()));

                other_node->append_node(new_node);
                iter++;
                count++;
            }
        }
    }

1 个答案:

答案 0 :(得分:0)

通常误解了rapidxml的方面。它存储指向您传递的任何字符串的指针,而不是复制内容。使用allocate_string函数,看看这个问题。 rapidxml - overwriting previous xml_nodes