2

我一直在尝试使用 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[] 都没有帮助。

任何帮助,将不胜感激。提前致谢 :)

4

1 回答 1

2

基于教程,我认为您需要使用std::string而不是char*获取字符串值。所以这条线test = pt.get<char*>("base.char");将是test = pt.get<std::string>("base.char");. (假设您也将test's 类型更改std::string为)。

于 2012-07-04T11:43:04.953 回答