2

ブーストのプロパティ ツリーを使用して 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(のタイプも に変更すると仮定std::stringします)。

于 2012-07-04T11:43:04.953 に答える