支持C++中的Unicode

Unicode in C++ support

本文关键字:Unicode 中的 C++ 支持      更新时间:2023-10-16

有一些关于这件事的帖子,但我想仔细检查一下。Joel Spoolsky的文章(链接)中写道:

在C++代码中,我们只是将字符串声明为wchar_t("wideChar")的char,并使用wcs函数而不是str函数(用于例如wcscat和wcslen而不是strcat和strlen)。创建C代码中的UCS-2字符串,您只需在其前面加一个L,如下所示:L"你好"。

我的问题是:上面写的内容是否不足以支持C++应用程序中的Unicode?

我的困惑始于我无法输出简单的文本,比如(俄语):

wcout<<L"логин";

在控制台中。

此外,最近我看到一些为嵌入式设备编写的代码,其中一个人使用wchar_t处理我认为与Unicode相关的字符串。

非常感谢您的帮助。

这在linux、utf8机器上的C++11中工作:

#include <iostream>
int main(int, char**) {
  std::cout << u8"Humberto Massa Guimarãesnлогинn";
}

首先,您不能在命令行中打印非英语字符

第二,简要介绍;UNICODE为每个字符使用两个字节,char使用一个字节。例如,字符串"ABC"将以字符形式存储为ABC\0(3字节+end_of_string_character)

但在UNICODE中将存储为A\0B\0C\0\0\0(6+end_of_string_character,与其他字符一样是两个字节)

为了查看一些文本,我建议您使用MessageBoxW:

首先包括windows头文件:#include <windows.h>

第二次使用MessageBoxW API函数:

MessageBoxW(0, L"UNICODE text body", L"title", MB_ICONINFORMATION);