c – boost属性树xml writer输出中没有行尾

前端之家收集整理的这篇文章主要介绍了c – boost属性树xml writer输出中没有行尾前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用boost :: property_tree考虑以下代码
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
using namespace boost::property_tree;

int main() {
    ptree model_tree;
    model_tree.add("calibrated","true");
    model_tree.add("model.<xmlattr>.label","label");
    model_tree.add("model.activity.<xmlattr>.type","fixed");
    write_xml("test.xml",model_tree);
}

通过编译和执行程序,我得到以下输出

<?xml version="1.0" encoding="utf-8"?>
<calibrated>true</calibrated><model label="label"><activity type="fixed"/></model>

这不是我所期望的,因为没有新的线条也没有缩进.我希望得到以下内容

<?xml version="1.0" encoding="utf-8"?>
<calibrated>true</calibrated>
<model label="label">
    <activity type="fixed"/>
</model>

这是一个错误,还是有选择获得后者的输出?任何帮助,将不胜感激.

P.S.:我正在使用Ubuntu 12.04 LTS和gcc 4.6.3并且提升1.48.

解决方法

与此同时,我找到了答案.应该使用xml_writer_settings,即:
xml_writer_settings<char> settings(' ',4);
write_xml("test.xml",model_tree,std::locale(),settings);

构造函数中的第一个参数是用于缩进的字符,而第二个参数是缩进长度.由于解决方案没有记录,希望这将有助于其他人面临类似的问题.

原文链接:https://www.f2er.com/c/119679.html

猜你在找的C&C++相关文章