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
Libérer: 2024-10-29 22:04:30
original
352 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal