Вопрос

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

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

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

Это было полезно?

Решение

Возможно:

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

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

Другие советы

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; 
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top