Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Menulis Output TiXml ke Penampan Memori Daripada Fail?

Bagaimana untuk Menulis Output TiXml ke Penampan Memori Daripada Fail?

Susan Sarandon
Susan Sarandonasal
2024-10-29 22:04:30353semak imbas

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

Mencipta Penampan Memori sebagai FAIL* untuk Output dalam TiXml

Dalam senario tertentu, keupayaan untuk menulis output TiXml ke penimbal memori bukan fail boleh berguna. Walau bagaimanapun, tiada fungsi langsung dalam TiXml untuk mengendalikan perkara ini.

Penyelesaian: Menggunakan Fungsi POSIX

Untuk mengatasi had ini, POSIX menyediakan dua fungsi yang membolehkan anda mencipta penimbal memori sebagai FAIL*:

  • fmemopen: Mencipta objek FILE* daripada penimbal memori sedia ada.
  • open_memstream: Mencipta penimbal memori dan objek FILE* secara serentak.

Contoh Menggunakan 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>

Dalam contoh ini, fungsi fmemopen mengambil penimbal memori dan saiznya sebagai hujah, bersama-sama dengan mod fail "w" untuk menulis. Kaedah doc.Print kemudian menulis dokumen XML ke penimbal memori melalui objek fp FILE*.

Contoh Menggunakan open_memstream:

<code class="c++">#include <iostream>
#include <sstream>

void writeXmlToMemoryBuffer(TiXmlDocument& doc) {
    std::ostringstream buffer;
    doc.Print(&buffer);
    std::cout << buffer.str();
}</code>

Dalam contoh ini, fungsi open_memstream tidak digunakan secara eksplisit, tetapi perpustakaan sstream menyediakan fungsi yang serupa. Ia mencipta objek penimbal rentetan (penampan) dan objek FILE (&penampan) secara serentak. Kaedah doc.Print menulis dokumen XML ke penimbal memori melalui objek FILE. Kandungan penimbal memori kemudiannya boleh diakses sebagai rentetan.

Dengan menggunakan fungsi POSIX ini, anda boleh mencipta penimbal memori dengan berkesan yang berkelakuan seperti objek FILE*, membenarkan TiXml mengeluarkan XML terus ke memori penimbal.

Atas ialah kandungan terperinci Bagaimana untuk Menulis Output TiXml ke Penampan Memori Daripada Fail?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn