c++ - 使用多个标志在 Boost Property Tree 1.50 中使用 read_xml() 时

标签 c++ boost tree flags boost-propertytree

所以我发现这里引用了“ pretty-print ”修剪空白标志: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 时启用忽略注释和修剪空白标志!任何帮助将不胜感激。

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

最佳答案

您必须使用按位 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;
}    

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

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

这是位表示法中的数字 6。

关于c++ - 使用多个标志在 Boost Property Tree 1.50 中使用 read_xml() 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11639623/

相关文章:

c++ - OpenCV程序中出现"xxx does not named a type"错误

c++ - 如何删除 boost managed_shared_memory 的一些内容?

c - 在递归函数中返回和使用多个树结构

c++ - 使用 imread 打开具有 unicode 名称的图像文件

C++ std::queue::pop() 调用析构函数。指针类型呢?

c++ - 非静态非引用数据成员声明变量吗?

python - c++ boost python列表提取导致段错误

c++ - 使用 Boost ProgramOptions 处理 2 级命令的最佳方式

c++ - 1个节点在C++中Tree的递归实现中出现较少

javascript - Dojo dgrid,将图标放在插件列树中的每个子行中(PDF、HTML、XSL)