【发布时间】:2025-12-31 10:40:12
【问题描述】:
我想将“U+XXXX”的 unicode 字符串 (unic) 转换为“\uxxxx”,以便打印符号,但出现以下错误:不完整的通用字符名称 \u|
我如何从一个字符串“U+xxxx”中创建一个有效的符号代码“\uxxxx”?
我的代码:
string unic = "U+xxxx";
unic.substr(2);
string symb="\u";
unic.insert(0, symb);
cout<<unic<<endl;
【问题讨论】:
-
什么是
unic? -
你为什么不使用合适的 Unicode 库?
-
编译器将字符串中的反斜杠解释为转义。我想你可能在这里指的是“\\u”。
-
你知道 \uXXXX 符号只适用于字符串文字吗?您不能将这六个字符添加到
std::string并期望 C++ 将其解释为单个 Unicode 字符。如果将六个字符添加到 C++ 字符串中,您只会得到六个字符。 -
您似乎混淆了内部表示和外部表示。您的第一步应该是将 unicode 符号表示法解释为 32 位 Unicode 代码点。然后,您需要将该代码点编码为字节,以便在屏幕上打印它们。第一步可以使用 scanf 完成,例如,第二步是通过使用 std::wstream 并希望它适应您的语言环境,或者编码为 utf-8 并输出这些字节来完成。我相信你已经问过最后一部分的问题了。