Преобразовать QString в строку Xerces - PullRequest
0 голосов
/ 17 января 2011

Я хочу преобразовать QString в XMLCh const *, который будет использоваться Xerces-C ++.

Первый может быть "преобразован" в const ushort * в NUL-конце.порядок байтов хоста за (я думаю) O (1) раз.Последняя также является строкой UTF-16, но я не уверен, в каком порядке следования байтов.

Кто-нибудь раньше решал эту проблему?Мне не хочется много копировать строки.

Ответы [ 2 ]

0 голосов
/ 11 декабря 2015
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; 
}
0 голосов
/ 17 января 2011

Возможно:

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

от здесь ? У меня нет личного опыта с этим.

...