gpt4 book ai didi

c++ - 使用 Boost `ptree.find` 无法按预期工作

转载 作者:行者123 更新时间:2023-11-28 07:03:58 26 4
gpt4 key购买 nike

我有

const boost::property_tree::ptree& v

我想得到 <xmlattr>.Value , 如果存在,否则为值。

我试过这段代码:

if(v.find("<xmlattr>.Value") != v.not_found())
value = v.get<std::string>("<xmlattr>.Value");
else
value = v.get_value<std::string>();

但是,它并没有像预期的那样工作。即使值在那里,find()返回 not_found() .

此代码有效:

auto inValue = v.get_optional<std::string>("<xmlattr>.Value");
if(inValue.is_initialized())
value = inValue.get();
else
value = v.get_value<std::string>();

我想我明白了 find()错误的。它到底是做什么的?我应该改用其他功能吗?

最佳答案

根据文档,find() (see here)找到具有给定键(不是路径)的 child ,如果没有则使用 not_found()。

<xmlattr>.Value是一条路径(适用于 getget_optional )。

关于c++ - 使用 Boost `ptree.find` 无法按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22041704/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com