Maison >développement back-end >C++ >Comment écrire la sortie TiXml dans une mémoire tampon au lieu d'un fichier ?
Création d'un tampon mémoire en tant que FILE* pour la sortie dans TiXml
Dans certains scénarios, possibilité d'écrire la sortie TiXml dans un tampon mémoire au lieu d'un fichier peut être utile. Cependant, il n'existe aucune fonctionnalité directe dans TiXml pour gérer cela.
Solution : Utilisation des fonctions POSIX
Pour surmonter cette limitation, POSIX fournit deux fonctions qui vous permettent de créer un tampon mémoire en tant que FILE* :
Exemple d'utilisation de fmemopen :
<code class="c++">#include <stdio.h> void writeXmlToMemoryBuffer(TiXmlDocument& doc) { // Create a memory buffer char buffer[1024]; // Open the buffer as a FILE* object FILE* fp = fmemopen(buffer, sizeof(buffer), "w"); // Write the XML document to the memory buffer through the FILE* object doc.Print(fp); // Close the FILE* object fclose(fp); }</code>
Dans cet exemple, la fonction fmemopen prend le tampon mémoire et sa taille en arguments, ainsi que le mode de fichier "w" pour l'écriture. La méthode doc.Print écrit ensuite le document XML dans la mémoire tampon via l'objet fp FILE*.
Exemple d'utilisation d'open_memstream :
<code class="c++">#include <iostream> #include <sstream> void writeXmlToMemoryBuffer(TiXmlDocument& doc) { std::ostringstream buffer; doc.Print(&buffer); std::cout << buffer.str(); }</code>
Dans cet exemple, la fonction open_memstream n'est pas explicitement utilisée, mais la bibliothèque sstream fournit des fonctionnalités similaires. Il crée simultanément un objet tampon de chaîne (buffer) et un objet FILE (&buffer). La méthode doc.Print écrit le document XML dans la mémoire tampon via l'objet FILE. Le contenu de la mémoire tampon est ensuite accessible sous forme de chaîne.
En utilisant ces fonctions POSIX, vous pouvez créer efficacement une mémoire tampon qui se comporte comme un objet FILE*, permettant à TiXml de générer du XML directement dans la mémoire. tampon.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!