正如我们所知,'═'
之类的内容会给出一个多字符常量警告。另一种方法是使用0x2550或"\u2550"
。但是,后者要求打印功能支持\u
转义序列。但是我不想在任何地方使用十六进制。是否有我可以使用的语言结构,当我真正指'='
时,我可以写uint32_t c = 0x2550
,即'='u
。
答案 0 :(得分:1)
\u
序列由C ++编译器解释,而不是由“打印函数”解释。但是,您需要使用宽字符串(std::wstring
)才能存储字符。例如:
#include <iostream>
#include <string>
int main() {
std::wstring s(L"\u2550");
std::wcout << s.size() << std::endl
<< std::hex << static_cast<int>(s[0]) << std::dec << std::endl
<< s << std::endl;
return 0;
}
输出显示此字符串中只有一个字符。
答案 1 :(得分:1)
“正如我们所知道的那样,'='会给出一个多字符不断的警告。
没有
“替代方法是使用0x2550或”\ u2550“。
没有
“但是,后者要求打印功能支持\ u转义序列。
没有
“但是我不想在任何地方使用十六进制。有没有我可以使用的语言结构,当我真的意思是uint32_t c = 0x2550时,我可以写'═',即'='u。
是
uint32_t c = L'═';
使用支持该字符的源代码。
对于不在Unicode的基本多语言平面中的字符,它会更加复杂,因为Windows中的wchar_t
只有16位,就像在原始Unicode中一样。