1

xercesc ::XMLStringクラスには、XMLCh 配列をネイティブ char *配列にトランスコードするための 2 つの異なる関数があります。

static char * transcode(const XMLCh *const toTranscode, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)

static bool transcode(const XMLCh *const toTranscode, char *const toFill, const XMLSize_t maxChars, MemoryManager *const manager=XMLPlatformUtils::fgMemoryManager)

ドキュメントによると、2 番目のオーバーロードは非推奨です。ただし、どちらの関数の正確な動作に関するドキュメントもまばらであり、(ContentHandler ::charactersハンドラーのように) 指定された長さの XMLCh 配列を取得する場合、文字数を制限する方法を使用する必要があるようです。トランスコード。2 番目の方法が推奨されない理由と、代替のトランスコーディング方法があるかどうかについての手がかりはありますか?

4

1 に答える 1

0

非推奨の関数では、バッファーを指定する必要があるため、そのサイズが必要になります。最初の(非推奨ではない)関数は、バッファーを作成し、そのバッファーへのポインターを返します。バッファが小さすぎるために非推奨の関数が成功しない可能性があることを除いて、どちらも同じことを行います。非推奨ではない関数のインターフェースはよりクリーンなようです。

于 2012-05-18T18:45:05.657 に答える