如何将unicode字符串转换为unicode转义?

Nar*_*rek 4 c++ unicode qt

说我有一个文本"ԲարեւHelloЗдравствуй".(我保存的QString这个代码,但如果你知道其他方式存储在C++代码这段文字,找你的欢迎.)我怎样才能转换这个文本的Unicode转义像这样的"\ u1330\u1377\u1408\u1415你好\ u1047\u1076\u1072\u1072\u1089\u1090\u1074\u1091\u1081"(见这里)?

Phi*_*ipp 5

#include <cstdio>

#include <QtCore/QString>
#include <QtCore/QTextStream>

int main() {
  QString str = QString::fromWCharArray(L"???? Hello ??????????");
  QString escaped;
  escaped.reserve(6 * str.size());
  for (QString::const_iterator it = str.begin(); it != str.end(); ++it) {
    QChar ch = *it;
    ushort code = ch.unicode();
    if (code < 0x80) {
      escaped += ch;
    } else {
      escaped += "\\u";
      escaped += QString::number(code, 16).rightJustified(4, '0');
    }
  }
  QTextStream stream(stdout);
  stream << escaped << '\n';
}
Run Code Online (Sandbox Code Playgroud)

请注意,这会循环使用UTF-16代码单元,而不是实际代码点.