FILE* 出力をメモリ バッファにリダイレクトする
TiXml では、XML を FILE* に簡単に出力できますが、問題が発生する可能性があります。これらの出力をメモリ バッファにリダイレクトします。これは、後続の処理または送信のためにメモリ内バッファリングが必要な場合に問題を引き起こします。
この制限を克服するために、POSIX 標準では 2 つのソリューションが提供されています。
1. fmemopen:
<code class="c">FILE *fmemopen(void *buf, size_t size, const char *mode);</code>
fmemopen を使用すると、メモリ バッファを FILE* として開くことができます。 3 つの引数を取ります:
FILE* はメモリ バッファ上で動作します。
2. open_memstream:
<code class="c">int open_memstream(char **ptr, size_t *sizeloc);</code>
open_memstream は、内部的に割り当てられたメモリ領域を参照する FILE* を作成する代替手段です。これは、ptr で割り当てられたメモリのアドレスを、sizeloc でバッファの初期サイズを返します。
fmemopen と同様に、この FILE* に対する後続の操作では、割り当てられたメモリが操作されます。
どちらかを利用することで、 fmemopen または open_memstream を使用すると、メモリ バッファを基にした FILE* を効果的に作成できます。これにより、XML を簡単に印刷したり、他のファイル操作をメモリに直接実行したりできるため、従来のファイル I/O を必要とせずにデータを管理および処理できるようになります。
以上がTiXml で FILE* プリントをメモリ バッファにリダイレクトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。