0

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

在 C++ 代码中,我们只是将字符串声明为 wchar_t(“宽字符”)而不是 char,并使用 wcs 函数而不是 str 函数(例如 wcscat 和 wcslen 而不是 strcat 和 strlen)。要在 C 代码中创建文字 UCS-2 字符串,您只需在其前面添加一个 L:L"Hello"。

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

当我无法输出像(俄语)这样的简单文本时,我的困惑就开始了:

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

在控制台中。

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

非常感谢任何帮助。

4

2 回答 2

0

这适用于 linux, utf8 机器上的 C++11:

#include <iostream>

int main(int, char**) {
  std::cout << u8"Humberto Massa Guimarães\nлогин\n";
}
于 2013-06-26T13:23:57.910 回答
-5

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

二、简要;UNICODE 为每个字符使用两个字节,而 char 使用单个字节。例如,字符串“ABC”将作为 ABC\0 存储在 char 中(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);
于 2013-06-26T12:20:52.940 回答