2015-03-31 18 views
10

Aby całkiem wydrukować moje wyjście XML z boost::property_tree, napisałem poniższy kod:błąd Kompilacja z boost :: property_tree :: xml_writer_settings

#include <boost/property_tree/ptree.hpp> 
#include <boost/property_tree/xml_parser.hpp> 

int main() 
{ 
    std::string filename = "test.xml"; 
    boost::property_tree::ptree pt; 
    pt.put("some.path.value", "hello"); 

    boost::property_tree::xml_writer_settings<char> settings('\t', 1); 
    write_xml(filename, pt, settings); 
} 

Niestety mam ten błąd i nie mogę znaleźć żadnych informacji o tym:

/usr/local/include/boost/property_tree/detail/xml_parser_writer_settings.hpp:38:19: error: type 'char' cannot be used prior to '::' because it has no members 
    typedef typename Str::value_type Ch; 
        ^

Masz pomysł?

+0

[Dokument] (http://www.boost.org/doc/libs/master/boost/property_tree/detail/xml_parser_writer_settings.hpp) ** może ** pomóc, ale nie jestem pewien –

+0

to jest nagłówek, którego używam. –

+1

_Następny time_: Proszę podać odpowiedni kod w pytaniu, abyśmy mogli uzyskać odpowiedź, zamiast wyciągać "dzięki, ale ... "w komentarzach :) – sehe

Odpowiedz

10

bym użyć funkcji pomocnika

std::ofstream file("test.xml"); 

boost::property_tree::ptree pt;  
pt.put("some.value", "test"); 

boost::property_tree::write_xml(
    file, pt, 
    boost::property_tree::xml_writer_make_settings<std::string>('\t', 1)); 
+0

Działa, ale jak mogę go użyć z write_xml? Podczas pisania 'write_xml (filename, pt, boost :: property_tree :: xml_writer_make_settings ('\ t', 1))' Mam następujący błąd: 'brak pasującej funkcji dla wywołania 'write_xml' –

+1

@MartinDelille Musisz przekazać strumień, a nie nazwa pliku. Dokumentacja jest cierpliwa :) http://www.boost.org/doc/libs/1_57_0/doc/html/boost/property_tree/xml_parser/write_xml_idp113303904.html (również śmiesznie skracałeś wiadomość, ponieważ teraz muszę zgadywać jakie są typy 'filename' i' pt'). – sehe

+0

dzięki za pomoc! –