boost属性树xml编写器输出没有结束
no end of line in boost property tree xml writer output
考虑使用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>
这是一个错误,还是有获得后一个输出的选项?如有任何帮助,我们将不胜感激。
附言:我使用的是Ubuntu 12.04 LTS,带有gcc 4.6.3和boost 1.48。
与此同时,我找到了答案。应该使用xml_writer_settings,即:
xml_writer_settings<char> settings(' ', 4);
write_xml("test.xml", model_tree, std::locale(), settings);
构造函数中的第一个参数是用于缩进的字符,而第二个参数是缩进长度。由于该解决方案没有记录在案,希望这将帮助其他面临类似问题的人。
在写入_xml 时使用设置
设置参数
1.字符缩进
2:重复次数
boost::property_tree::xml_writer_settings<char> settings('t', 1);
write_xml("xmlfilePath.xml", pt, std::locale(), settings);
使用(至少)boost 1.58,您可以尝试以下操作:
pt::write_xml( "test.xml",
model_tree,
std::locale(),
pt::xml_writer_make_settings< std::string >( ' ', 4) );
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 在结束运行之前获取 c++ 中的 shell 命令输出
- 程序不会在必须时结束并显示输出
- 带有文件结束函数的 while 循环重复输出文件中的最后一个数字两次
- 创建以不良输出结束
- 应用程序在显示最终输出之前结束
- 程序在输出后不会结束
- 如何确定输出流链是否已结束?
- 如何删除此代码输出的结束空格
- boost属性树xml编写器输出没有结束
- 数组循环在循环结束后输出垃圾
- 插入标准::结束后输出奇怪
- 编译后的c++输出文件在程序结束时显示随机字符
- std::cout输出直到程序结束才打印
- 输出一个整数数组以垃圾结束