fok*_*oke 31 c++ boost boost-propertytree
我正在使用boost :: property_tree在我的应用程序中读取和写入XML配置文件.但是当我写文件时,输出看起来很丑陋,文件中有很多空行.问题是它应该由人类编辑,所以我想获得更好的输出.
作为一个例子,我写了一个小测试程序:
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
int main( void )
{
using boost::property_tree::ptree;
ptree pt;
// reading file.xml
read_xml("file.xml", pt);
// writing the unchanged ptree in file2.xml
boost::property_tree::xml_writer_settings<char> settings('\t', 1);
write_xml("file2.xml", pt, std::locale(), settings);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
file.xml包含:
<?xml version="1.0" ?>
<config>
<net>
<listenPort>10420</listenPort>
</net>
</config>
Run Code Online (Sandbox Code Playgroud)
运行程序后,file2.xml包含:
<?xml version="1.0" encoding="utf-8"?>
<config>
<net>
<listenPort>10420</listenPort>
</net>
</config>
Run Code Online (Sandbox Code Playgroud)
有没有办法获得更好的输出,除了手动通过输出和删除空行?
fok*_*oke 43
解决方案是将trim_whitespace标志添加到调用read_xml:
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
int main( void )
{
// Create an empty property tree object
using boost::property_tree::ptree;
ptree pt;
// reading file.xml
read_xml("file.xml", pt, boost::property_tree::xml_parser::trim_whitespace );
// writing the unchanged ptree in file2.xml
boost::property_tree::xml_writer_settings<char> settings('\t', 1);
write_xml("file2.xml", pt, std::locale(), settings);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这里记录了这面旗帜,但是图书馆的当前维护者(Sebastien Redl)非常友好地回答并指出了它.
| 归档时间: |
|
| 查看次数: |
22064 次 |
| 最近记录: |