Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将QString转换为Xerces字符串_C++_String_Qt_Qt4_Xerces C - Fatal编程技术网

C++ 将QString转换为Xerces字符串

C++ 将QString转换为Xerces字符串,c++,string,qt,qt4,xerces-c,C++,String,Qt,Qt4,Xerces C,我想将a转换为Xerces-C++使用的XMLCh const* 前者可以在(我认为)O(1)时间内以主机字节顺序“转换”为NUL终止的const ushort*。后者也是一个UTF-16字符串,但我不确定是哪个字节顺序 以前有人解决过这个问题吗?我不想大量复制字符串。也许: const XMLCh* QtoX(const QString& s) { return (s.utf16()); } QString XtoQ(const XMLCh* x) { return QString::

我想将a转换为Xerces-C++使用的
XMLCh const*

前者可以在(我认为)O(1)时间内以主机字节顺序“转换”为NUL终止的
const ushort*
。后者也是一个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; 
}

我曾经想到过类似的东西,但我在Xerces-C文档中找不到它是需要主机字节顺序还是网络字节顺序。谷歌搜索了一下发现:啊,我没看到。谢谢(这里也有:)总是更好的来源:)