0

有人可以告诉我“(char)”的Unicode等价物是什么吗?

例如,对于 ASCII,我总是使用

 (char)(7)

现在我想做同样的事情,但对于 Unicode。

 (wchar_t)(7)

没有成功,并且 wchar 不存在。

我想将这个(可能的)Unicode 字符传递给一个接受 wstring 的函数。

或者换句话说:如何以编程方式从 unicode 字符值创建 wstring(如 TAB 的 7)?

4

2 回答 2

3

我想将此(可能的)Unicode 字符传递给接受wstring.

然后您需要制作 a wstring,就像您需要string从 a 制作 achar如果您需要将 ASCII 字符传递给接受 a 的函数一样string

function(std::wstring(1, 7)); // length 1, filled with value 7
于 2013-04-02T11:36:39.717 回答
0

内存中的数据不以 Unicode 格式存储。Unicode 为计算机上使用的每个(嗯,很多)字符提供了一个唯一编号。

在内存中,字符被编码:将字节值映射到 Unicode 数字。

你使用什么编码?

  • UTF-8:每个字符都映射到 1、2、3、4、5 或 6 字节序列。
  • UTF-16:每个字符都映射到一个 2 或 4 字节序列。
  • UCS-2:大多数字符到 2 字节序列的不完整映射。
  • UTF-32:每个字符都映射到一个 4 字节序列。

win32 中的 wchar_t 是 16 位的,字符应以UCS-2 UTF-16编码。

大多数 *NIX 上的 wchar_t 是 32 位的,字符应该以 UTF-32 编码。

更新

呵呵,看来我老了。我的最后一部作品是在 VS2005 中,仍然有提到 UCS-2 作为内部编码,但我想即使那已经过时了。

于 2013-04-02T11:52:33.223 回答