2011-01-17 8 views
0

Xerces-C++で使用するQStringXMLCh const *に変換したいと考えています。QStringをXerces文字列に変換する

O(1)時間内にホストバイトオーダーでNUL終了のconst ushort *に変換することができます。後者はUTF-16文字列ですが、どのバイトオーダーであるかわかりません。

誰もこの問題に取り組んでいませんか?私はたくさんの文字列をコピーするような気がしません。

答えて

0

おそらく:hereから

const XMLCh* QtoX(const QString& s) { return (s.utf16()); } 
QString XtoQ(const XMLCh* x) { return QString::fromUtf16(x); } 

?私はこれに個人的な経験はありません。

+0

私はこれに似た考え出したものをいただきたいが、私はそれがホストバイトオーダーやネットワークバイトを期待するかどうかのXerces-Cのドキュメントで見つけることができません-注文。 –

+0

グーグルが少しこれを見つけた:http://web.archiveorange.com/archive/v/yh2do8NlHXpwlbtrr0Uj – dabhaid

+1

ああ、それを見ていない。ありがとう! (また、ここで:http://mail-archives.apache.org/mod_mbox/xerces-c-users/201007.mbox/%[email protected]%3E) –

-2
QString->XMLCh* QString::toWCharArray(XMLCh* buffer) 
XMLCh->QString QString::fromWCharArray(x) 

XMLChにメモリを割り当てる:

XMLCh* QString2X(QString _w, MemoryManager *mm = 
       XMLPlatformUtils::fgMemoryManager) { 
    XMLCh b[256]; 
    _w.toWCharArray(b); 
    XMLCh* _x = (XMLCh*) mm->allocate((XMLString::stringLen(b)+1)*sizeof(XMLCh)); 
    XMLString::copyString(_x, b); 
    return _x; 
}