将 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;
根据我之前的问题
我想知道如何将字符串转换为 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;