如何使用转义序列在C ++中指定INFINITY(U + 221E)?

时间:2010-10-11 17:33:23

标签: c++ qt

如何在不直接将符号(∞)粘贴到我的代码文件中的情况下在C ++中指定Unicode字符INFINITY(U + 221E)?我已经尝试了\ x221e但是会发出警告,并且\ u221e给了我一个带有CIRCUMFLEX(U + 00E2)的拉丁文小写字母。

QString label;
label.append(tr("HP: \u221e\n\n"));

4 个答案:

答案 0 :(得分:5)

尝试\ xE2 \ x88 \ x9E。

但要让Qt使用UTF-8,似乎你需要

QTextCodec::setCodecForTr(QTextCodec::codecForName("UTF-8"));

在它之前的某个地方。

答案 1 :(得分:0)

Unicode转义是正确的方法,但路径中的其他内容正在破坏它并将UTF-8显示为Latin-1。

答案 2 :(得分:0)

这是一个16位的Unicode字符。如果使用宽字符串,则16位字符只能表示为单个元素。

尝试

L"HP: \x221E\n\n"

u"HP: \x221E\n\n"

您使用的是哪种编码?如果QT预期为UTF-8,那么你实际上需要一个多字节序列来编码该字符。

答案 3 :(得分:0)

这也可以作为替代方案:

label.append(trUtf8("HP: \u221e\n\n"));