gpt4 book ai didi

c++ - boost::property_tree 多久解析一次属性文件?

转载 作者:太空狗 更新时间:2023-10-29 21:03:14 28 4
gpt4 key购买 nike

我需要从文件中读取属性以影响程序行为。看起来 boost::property_tree 会做得很好。但是,我想知道在获取不同类型的值时,库是否可能会多次读取文件?

出于性能原因,我希望它只有一次。大多数属性都是简单的值,例如数字和字符串。但偶尔会有数字列表和字符串列表。

我认为它只解析文件一次,但你永远不知道,因此才有问题。

谢谢。

最佳答案

你控制它,它只读取一次:

//
// All that is required to read an xml file into the tree
//

std::ifstream in("region.xml");
boost::property_tree::ptree result_tree;
boost::property_tree::read_xml(in,result_tree);

使用相应的 read_XXX 方法包含正确的 header 并读取 ini、json 或 xml 文件到树中。

然后您可以使用“路径”访问树中的元素,或者您可以遍历子树

BOOST_FOREACH(boost::property_tree::ptree::value_type &v,result_tree.get_child("gpx.rte"))
{
if( v.first == "rtept" ) //current node/element name
{
boost::property_tree::ptree subtree = v.second ;
//A path to the element is required to access the value
const int lat = sub_tree.get<double>( "<xmlattr>.lat")*10000.0;
const int lon = sub_tree.get<double>( "<xmlattr>.lon")*10000.0;
}
}

或通过路径直接访问:

  // Here is simplistic access of the data, again rewritten for flexibility and 
// exception safety in real code (nodes shortened too)
const int distVal =
result_tree.get<int>
( "Envelope.Body.MatrixResponse.Matrix.Route.<xmlattr>.distance")/1000;

关于c++ - boost::property_tree 多久解析一次属性文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13885976/

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