C++ 打印boost属性树生成的xml

C++ 打印boost属性树生成的xml,c++,boost,boost-propertytree,C++,Boost,Boost Propertytree,我测试了boost::property_tree,结果很好:我可以加载XML、提取元素、保存XML等。但是,是否可以生成XML并打印它?我不想保存它 void debug_settings::load(const std::string &filename) { using boost::property_tree::ptree; ptree pt; read_xml(filename, pt); m_file = pt.get<std::strin

我测试了
boost::property_tree
,结果很好:我可以加载XML、提取元素、保存XML等。但是,是否可以生成XML并打印它?我不想保存它

void debug_settings::load(const std::string &filename) {
    using boost::property_tree::ptree;
    ptree pt;
    read_xml(filename, pt);
    m_file = pt.get<std::string>("debug.filename");
    m_level = pt.get("debug.level", 0);
    BOOST_FOREACH(ptree::value_type &v, pt.get_child("debug.modules"))m_modules.insert(v.second.data());

}

void debug_settings::save(const std::string &filename) {
    using boost::property_tree::ptree;
    ptree pt;
    pt.put("debug.filename", m_file);
    pt.put("debug.level", m_level);
    BOOST_FOREACH(const std::string &name, m_modules)pt.add("debug.modules.module", name);
    write_xml(filename, pt);

}
void debug\u设置::加载(常量std::字符串和文件名){
使用boost::property_tree::ptree;
ptree-pt;
读取xml(文件名,pt);
m_file=pt.get(“debug.filename”);
m_level=pt.get(“debug.level”,0);
BOOST_FOREACH(ptree::value_type&v,pt.get_child(“debug.modules”))m_modules.insert(v.second.data());
}
无效调试设置::保存(常量std::字符串和文件名){
使用boost::property_tree::ptree;
ptree-pt;
pt.put(“debug.filename”,m_文件);
pt.put(“调试级”,m_级);
BOOST_FOREACH(const std::string&name,m_modules)pt.add(“debug.modules.module”,name);
写入xml(文件名,pt);
}

这是我用来加载和保存XML的函数。我们有什么方法来显示它吗?

您可以使用任何类型的输出流,因此std::cout可以很好地将XML打印到当前控制台。

使用以下版本的函数

template<typename Ptree> 
  void write_xml
  (
     std::basic_ostream< typename Ptree::key_type::value_type > & stream, 
     const Ptree & pt, 
     const xml_writer_settings< typename Ptree::key_type::value_type > & settings = 
     xml_writer_settings< typename Ptree::key_type::value_type >()
  );
用于控制台中的输出

std::ostringstream oss;
write_xml(oss, pt);
对于
stringstream
中的输出(您可以使用
stringstream
str
功能在控制台中输出
stringstream
内容)


$4

例如写入流(std::stringstream)。@ForEveR你能给我一个小例子吗?链接死了
std::ostringstream oss;
write_xml(oss, pt);