Maison >développement back-end >C++ >Comment écrire la sortie TiXml dans une mémoire tampon au lieu d'un fichier ?

Comment écrire la sortie TiXml dans une mémoire tampon au lieu d'un fichier ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 22:04:30353parcourir

How to Write TiXml Output to a Memory Buffer Instead of a File?

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* :

  • fmemopen : Crée un objet FILE* à partir d'un tampon mémoire existant.
  • open_memstream : Crée simultanément un tampon mémoire et un objet 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn