TiXml の出力用の FILE* としてメモリ バッファを作成する
特定のシナリオでは、TiXml 出力をメモリ バッファに書き込む機能ファイルの代わりに使用すると便利です。ただし、TiXml にはこれを処理する直接的な機能はありません。
解決策: POSIX 関数の使用
この制限を克服するために、POSIX には次のような関数を作成できる 2 つの関数が用意されています。 FILE* としてのメモリ バッファ:
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>
この例では、fmemopen 関数はメモリ バッファ バッファを取得します。およびそのサイズを引数として指定し、書き込み用のファイル モード "w" も指定します。次に、doc.Print メソッドは、fp FILE* オブジェクトを介して XML ドキュメントをメモリ バッファに書き込みます。
open_memstream の使用例:
<code class="c++">#include <iostream> #include <sstream> void writeXmlToMemoryBuffer(TiXmlDocument& doc) { std::ostringstream buffer; doc.Print(&buffer); std::cout << buffer.str(); }</code>
この例では、 open_memstream 関数は明示的には使用されませんが、sstream ライブラリは同様の機能を提供します。文字列バッファ オブジェクト (buffer) と FILE オブジェクト (&buffer) を同時に作成します。 doc.Print メソッドは、FILE オブジェクトを通じて XML ドキュメントをメモリ バッファーに書き込みます。メモリ バッファの内容は文字列としてアクセスできます。
これらの POSIX 関数を使用すると、FILE* オブジェクトのように動作するメモリ バッファを効果的に作成でき、TiXml が XML をメモリに直接出力できるようになります。バッファ。
以上がTiXml 出力をファイルではなくメモリ バッファに書き込むにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。