将 QString 转换为 Xerces 字符串

发布于 2024-10-12 13:32:51 字数 267 浏览 12 评论 0原文

我想将 QString 转换为 XMLCh const * 由 Xerces-C++ 使用。

前者可以在(我认为)O(1) 时间内按照主机字节顺序“转换”为 NUL 终止的 const ushort *。后者也是一个 UTF-16 字符串,但我不确定是哪个字节顺序。

以前有人解决过这个问题吗?我不想进行大量的字符串复制。

I want to convert a QString to an XMLCh const * to be used by Xerces-C++.

The former can be "transformed" to a NUL-terminated const ushort * in host byte-order in (I think) O(1) time. The latter is also a UTF-16 string, but I'm not sure in which byte-order.

Has anyone tackled this problem before? I don't feel like doing lots of string copying.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

暖树树初阳… 2024-10-19 13:32:51

也许:

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

来自这里?我对此没有个人经验。

Perhaps:

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

from here? I have no personal experience with this.

梦里泪两行 2024-10-19 13:32:51
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; 
}
QString->XMLCh*  QString::toWCharArray(XMLCh* buffer)
XMLCh->QString   QString::fromWCharArray(x)

Allocate a memory for 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; 
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文