基于我之前的问题 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'
我的stringstream_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'的等价物答案 0 :(得分:0)
您需要先将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;