2

所以我发现这里引用的“漂亮打印”修剪空白标志:boost::property_tree XML 漂亮打印

我找到了 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!任何帮助,将不胜感激。

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

4

1 回答 1

4

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

#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 的位将组合在一起以生成具有唯一值的新 int。例如,数字 2 具有位(二进制)表示 00000010,数字 4 具有位表示 00000100(假设您使用 8 位来表示整数)。按位或运算比较每个位,如果其中一个为 1 或两者均为 1,则结果为 1。否则为 0。在我们的例子中:

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

这是位符号中的数字 6。

于 2012-10-25T20:05:26.713 回答