将 std::string 转换为 utf-16(如 u"some string");调试器告诉 "no suitable conversion exists"

Convert std::string to utf-16 (like u"some string"); Debugger tells "no suitable conversion exists"

根据我之前的问题

我想知道如何将字符串转换为 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'

我的stringstream_s包含4个十六进制表示字母,如'0b82'(十进制:2946)或'0b77'(十进制:2935)。

我试过了

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

它给了我 "no suitable conversion function from std::string to char16_t exists"

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

当我只有一个空字符串 '0b7f'

时,我需要知道 u'\u0b7f' 的等价物

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

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

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

std::string s = "0b82";
unsigned short i;
std::istringstream(s) >> std::hex >> i;
char16_t ch = (char16_t) i;