提升属性树访问冲突

时间:2012-07-04 11:32:33

标签: c++ xml boost access-violation boost-propertytree

我一直在尝试使用boost的属性树解析XML文件,但每次我想获取字符串的值时都会抛出访问冲突异常。它对整数很好用,所以我有点困惑。 这是一些代码:

class Config
{
    char * test;
    int test2;

public:
    Config();
};

Config::Config(void)
{
    boost::property_tree::ptree pt;
    boost::property_tree::xml_parser::read_xml("config.xml", pt);

    try
    {
        test = pt.get<char*>("base.char");
        test2 = pt.get<int>("base.int");
    }
    catch(std::exception e)
    {
        //something wasn't specified
    }
}

XML文件:

<base>
    <char>test</char>
    <int>10</int>
</base>

首先我认为这是因为我没有为字符串分配空间,但malloc()和new char []都没有帮助。

任何帮助将不胜感激。在此先感谢:)

1 个答案:

答案 0 :(得分:2)

根据this教程,我认为您需要使用std::string代替char*来获取字符串值。 因此,行test = pt.get<char*>("base.char");将为test = pt.get<std::string>("base.char");。 (假设您将test的类型更改为std::string)。