0

基于我之前的问题 C++: Convert hex representation of UTF16 char into decimal (like python's int(hex_data, 16))

我想知道如何将字符串转换为char16_t的 unicode :

作为

int main()
{   
    char16_t c = u'\u0b7f';
    std::cout << (int)c << std::endl;
    return 0;
}

产生十进制2943非常好,我现在需要知道如何将 4 位字符串注入char16_t c = u'\uINSERTHERE'

Mystringstream_s包含 4 个十六进制表示字母,例如“0b82”(十进制:2946)或 “0b77”(十进制:2935)。

我试过了

std::string stringstream_s;
....stringstream_s gets assigned....
char16_t c = (u'\u%s',stringstream_s);

它给了我“从 std::string 到 char16_t 不存在合适的转换函数”

所以基本上来说,如何将字符串转换为 unicode utf16 .....?

当我只有一个裸字符串 '0b7f' 时,我需要知道 u'\u0b7f' 的等价物

4

1 回答 1

0

您需要std::string先将 转换为整数,然后可以将整数类型转换为char16_t. 在这种情况下,std::stoi()将是最简单的解决方案:

std::string s = "0b82";
char16_t ch = (char16_t) std::stoi(s, nullptr, 16); 

或者,您可以使用 astd::istringstream代替:

std::string s = "0b82";
unsigned short i;
std::istringstream(s) >> std::hex >> i;
char16_t ch = (char16_t) i; 
于 2016-11-11T19:58:50.070 回答