C ++如何将unicode字符转换为int

时间:2018-02-05 09:29:42

标签: c++ windows visual-c++ unicode

我想将Unicode字符(波斯语)转换为int。 根据{{​​3}}列表,'آ'的Unicode编号为U+0622

假设我想将U+0622作为整数值。我写了这段代码:

unsigned int Alef = (unsigned int)'آ';
std::cout << Alef << std::endl;

输出:

  

63

正确答案是1570,如您所见输出错误。我猜它只会转换Unicode字符的第一个字节。

如何转换Unicode字符以给出正确答案?

1 个答案:

答案 0 :(得分:4)

尝试将该字符表示为wchar字面值:

unsigned int Alef = (unsigned int) L'آ';
std::cout << Alef << std::endl;

但要确保你保存为Unicode,nano,例如,将'Â'转换为'?'在保存之前。和Windows上的记事本一样,我认为呢?

另外要添加到我的答案中,您应该将Unicode字符写入std::wcout而不是std::cout,因为cout用于单字节字符,而wcout用于wchar类型。

编辑:记事本保存为Unicode