TiXml の出力用のファイル* としてメモリ バッファを作成する
特定のシナリオでは、TiXml 出力をメモリ バッファに書き込む機能ファイルの代わりに使用すると便利です。ただし、TiXml にはこれを処理する直接機能はありません。
解決策: POSIX 関数の使用
この制限を克服するために、POSIX には次の関数を作成できる 2 つの関数が用意されています。 FILE*:
fmemopen:
の使用例]#include
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);
}
この例では、 fmemopen 関数は、書き込み用のファイル モード "w" とともに、メモリ バッファ バッファとそのサイズを引数として受け取ります。次に、doc.Print メソッドは、fp FILE* オブジェクトを介して XML ドキュメントをメモリ バッファに書き込みます。
open_memstream の使用例:
#include
#include
void writeXmlToMemoryBuffer(TiXmlDocument& doc) {
std::ostringstream buffer;
doc.Print(&buffer);
std::cout この例では、open_memstream 関数は明示的に使用されていませんが、sstream ライブラリは同様の機能を提供します。文字列バッファ オブジェクト (buffer) と FILE オブジェクト (&buffer) を同時に作成します。 doc.Print メソッドは、FILE オブジェクトを通じて XML ドキュメントをメモリ バッファに書き込みます。メモリ バッファの内容は文字列としてアクセスできます。
これらの POSIX 関数を使用すると、FILE* オブジェクトのように動作するメモリ バッファを効果的に作成でき、TiXml が XML をメモリに直接出力できるようになります。バッファ。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3