2012-05-18 32 views
1

xercesc::XMLString類有兩個不同的功能進行代碼轉換的XMLCh陣列到本機字符*數組:如何對有限長度的xerces XMLCh數組進行轉碼?

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)

根據the documentation,第二過載已被棄用。然而,文檔在任何一個函數的確切行爲上都是稀疏的,當我得到一個指定長度的XMLCh數組時(如ContentHandler::characters處理程序),似乎我想要使用限制轉碼字符數的方法。關於爲什麼第二種方法不推薦使用的任何線索,以及是否有任何其他代碼轉換方法?

回答

0

不推薦使用的函數需要您提供一個緩衝區,因此它的大小。第一個(不推薦)函數爲您創建緩衝區並返回指向它的指針。它們都執行相同的操作,但由於緩衝區太小,不推薦使用的函數可能不會成功。看起來像非棄用功能有一個更清潔的界面。

+1

同意,非棄用功能是一個非常乾淨的界面,但它是如何知道何時停止閱讀toTranscode數組?它是否依賴於以空終止的數組?如果不是 - 我們是否直接跑到底,還是會出現一些內部的xerces魔法? – Anne

+0

我不確定。它必須以某種方式跟蹤。它可以被記錄下來,也可以在調試器中查看。 –

相關問題