使用多个标志在Boost属性树1.50中使用read_xml()时

时间:2012-07-24 21:30:58

标签: c++ boost tree flags boost-propertytree

所以我在这里引用了'漂亮的打印'修剪空白标记:boost::property_tree XML pretty printing

我找到了Boost :: Property_Tree 1.50的read_xml()函数的文档: http://www.boost.org/doc/libs/1_50_0/doc/html/boost/property_tree/xml_parser/read_xml_id1073248.html

但我不能为我的生活弄清楚如何在阅读时启用忽略注释和修剪空白标志,然后编写XML!任何帮助将不胜感激。

我认为我的主要问题是函数原型。如何使用的标志转换为整数,就像函数原型似乎要求的那样?

1 个答案:

答案 0 :(得分:4)

您必须使用按位OR(竖线字符|)连接标记。使用单个参数指定多个标志是一种相当常见的方法。例如:

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>

int main(int argc, char* argv[])
{
    ptree pt;
    using namespace boost::property_tree::xml_parser; // just to keep the flags nice and short

    read_xml("file.xml", pt, trim_whitespace | no_comments);
    return 0;
}    

关于你的第二个问题,标志被声明为整数。当您执行按位或者,将表示整数的位组合在一起以创建具有唯一值的新int。例如,数字2具有位(二进制)表示00000010,数字4具有按位表示00000100(假设您使用8位表示整数)。按位或运算比较每个位,如果其中一个为1或两者都为1,则结果为1.否则为零。在我们的案例中:

  00000010
| 00000100
----------
  00000110

这是位符号的数字6。