2015-03-31 20 views
10

Per stampare abbastanza la mia uscita XML con boost::property_tree, ho scritto il seguente codice:errore di compilazione con 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); 
} 

Purtroppo non ho questo errore e non riesco a trovare alcuna informazione su di esso:

/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; 
        ^

Qualche idea?

+0

[Questo documento] (http://www.boost.org/doc/libs/master/boost/property_tree/detail/xml_parser_writer_settings.hpp) ** potrebbe ** aiutarti, ma non sono sicuro –

+0

questa è l'intestazione che sto usando –

+1

_Prossima volta_: Si prega di includere il codice rilevante nella domanda, in modo che possiamo asso la risposta, invece di disegnare "grazie, ma ... "nei commenti :) – sehe

risposta

10

userei la funzione di supporto

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

Funziona ma come posso usarlo con write_xml? Durante la scrittura di 'write_xml (filename, pt, boost :: property_tree :: xml_writer_make_settings ('\ t', 1))' Ho il seguente errore: 'nessuna funzione di matching per la chiamata a 'write_xml' –

+1

@MartinDelille È necessario passare un flusso, non un nome di file. La documentazione è paziente :) http://www.boost.org/doc/libs/1_57_0/doc/html/boost/property_tree/xml_parser/write_xml_idp113303904.html (anche divertente hai troncato il messaggio perché ora devo indovinare quali sono i tipi di 'filename' e' pt'). – sehe

+0

grazie per il tuo aiuto! –

Problemi correlati