有很多关于如何在 C++ 中输出 unicode 字符的信息。我可以用下面的代码做到这一点。这会输出一个小写的“h”。
cout << '\u0068' << endl;
是否有可能走另一条路。也就是说,输入“h”并让 cout 在控制台中显示 0068(unicode 编号)?
我已经用谷歌搜索死了,什么也没找到。我不想构建查找表/switch 语句等。尽管可能有一种简单的方法可以使用上述简单的方法将 unicode 字符转换为它们的 unicode 数字。任何线索。
关键是您必须设置数据的类型,以便编译器选择重载operator<<()
的cout
结果以产生数字输出。您可以根据需要设置std::hex
iomanip 标志,a 的类型char
或wchar_t
将始终选择operator<<()
输出可读字符的,而不是它的值。要让编译器选择operator<<()
将打印一个值的字符,您必须将字符转换为数字类型。在下面的示例中,我将其转换为 auint32_t
因为 32 位足以表示任何 unicode 字符。我可以将它投射到int
我的系统上,因为在我的系统上,int 是 32 位的,但要确保您的代码即使对于微型嵌入式系统也可移植int
是 16 位,您几乎没有足够的内存来处理 ASCII,更不用说 unicode,您应该将其转换为保证为 32 位或更多位的类型。 long
也足够了。
#include <iostream>
#include <iomanip>
#include <stdint.h>
int main()
{
cout << hex << '\u0068' << dec << endl;
wchar_t c;
std::wcout << "Type a character... " << std::endl;
std::wcin >> c;
std::wcout << "Your character was '" << c << "' (unicode "
<< std::hex << std::setw(4) << static_cast<uint32_t>(c) << ")\n";
}