Redirection des impressions FILE* vers un tampon mémoire
Dans TiXml, même si vous pouvez facilement générer du XML vers un FILE*, vous pourriez rencontrer des difficultés rediriger ces impressions vers une mémoire tampon. Cela pose un défi si vous souhaitez une mise en mémoire tampon en mémoire pour un traitement ou une transmission ultérieure.
Pour surmonter cette limitation, la norme POSIX propose deux solutions :
1. fmemopen :
<code class="c">FILE *fmemopen(void *buf, size_t size, const char *mode);</code>
fmemopen vous permet d'ouvrir une mémoire tampon sous forme de FICHIER*. Il faut trois arguments :
Toutes les opérations que vous effectuez sur le FILE* fonctionnera désormais sur la mémoire tampon.
2. open_memstream :
<code class="c">int open_memstream(char **ptr, size_t *sizeloc);</code>
open_memstream est une alternative qui crée un FILE* qui référence une zone mémoire allouée en interne. Il renvoie l'adresse de la mémoire allouée dans ptr et la taille initiale du tampon dans sizeloc.
Comme fmemopen, les opérations ultérieures sur ce FILE* manipuleront la mémoire allouée.
En utilisant soit fmemopen ou open_memstream, vous pouvez effectivement créer un FILE* sauvegardé par une mémoire tampon. Cela vous permet d'imprimer facilement du XML ou d'effectuer d'autres opérations sur les fichiers directement dans la mémoire, vous permettant ainsi de gérer et de traiter les données sans avoir besoin d'E/S de fichiers traditionnelles.
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!