Boost tiene un tutorial on how to load XML from a file. ¿Cómo puedo alimentarlo con una cadena que creo en el código o que recibo de un usuario (por ejemplo, con cin
)?Cómo alimentar Boost.PropertyTree con una cadena, no un archivo?
14
A
Respuesta
10
Envuelva la cadena en un istringstream
.
11
Heres un código que funciona para mí ...
// Create an empty property tree object
ptree xmlTree;
// Read the XML config string into the property tree. Catch any exception
try {
stringstream ss; ss << xmlConfigString;
read_xml(ss, xmlTree);
}
catch (xml_parser_error &e) {
LOGERROR ("Failed to read config xml " << e.what());
}
catch (...) {
LOGERROR ("Failed to read config xml with unknown error");
}
4
Las otras respuestas son no ideal, porque el uso de istringstream
innecesariamente copias en todo el búfer.
Como una respuesta en this question sugiere, se puede utilizar el istrstream
en desuso, pero ya que esto genera avisos y puede ser removido en el futuro, una mejor solución es utilizar boost::iostreams:
boost::iostreams::stream<boost::iostreams::array_source> stream(moo.c_str(), moo.size());
boost::property_tree::read_json(stream, tree);
Esto evita innecesariamente copiar el buffer de la misma manera que lo hizo istrstream
(que puede ser un problema considerable, si su búfer de entrada es grande), y le ahorra tener que escribir su propia clase de flujo.
Cuestiones relacionadas
- 1. cómo alimentar un archivo a telnet
- 2. cómo alimentar una cadena rtf a un control de richtextbox
- 3. ¿Cómo se analizan los atributos en Boost.PropertyTree?
- 4. Cómo usar Paperclip sin un archivo, solo con una cadena?
- 5. cómo alimentar a pybrain ffn con una entrada (a una red ya entrenada)?
- 6. Devuelve una tupla de argumentos para alimentar a string.format()
- 7. Objective-C crear un archivo de texto con una cadena
- 8. Carrierwave - "cargando" un archivo de una cadena
- 9. SharpZipLib crear un archivo con una cadena en la memoria y descargarlo como un archivo adjunto
- 10. PHP buscando una cadena en un archivo
- 11. ¿Cómo puedo dividir una cadena con un delimitador de cadena?
- 12. cómo leer una cadena de un archivo \ n delimitado
- 13. Dividir una cadena en una cadena, no un carácter
- 14. ¿Cómo envuelvo una cadena en un archivo en Python?
- 15. Cómo convertir un OpenCV cv :: Mat en un flotante * que se puede alimentar a Vlfeat vl_dsift_process?
- 16. ¿Cómo descargar un archivo en una cadena con una devolución de llamada de progreso?
- 17. Cómo guardar una cadena en un archivo .txt en Delphi?
- 18. ¿Cómo reemplazar una cadena en un archivo existente en Perl?
- 19. ¿Cómo leer un archivo en una cadena en java?
- 20. Cómo alimentar las consultas de mysql desde bash
- 21. ¿Cómo mostrar WordPress RSS alimentar su sitio web?
- 22. Cómo alimentar eficientemente FAST ESP con gigabytes de datos con .NET
- 23. ¿Cómo se hace una cadena como un archivo erb?
- 24. ¿Cómo escribo una cadena XML en un archivo?
- 25. PowerShell: cómo evaluar una cadena leer desde un archivo
- 26. ¿Cómo escribir una cadena en un archivo en C?
- 27. Sanitize una cadena con repetición no alfanumérica
- 28. Analizar un número de una cadena con no dígitos entre
- 29. Lea una cadena almacenada en un archivo de recursos (resx) con el nombre de archivo dinámico
- 30. ¿Cómo concateno una cadena con una variable?