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