На основании моего предыдущего вопроса
C ++: преобразовать шестнадцатеричное представление символа UTF16 в десятичное (например, int в python (hex_data, 16))
Я хотел бы знать, как преобразовать строку в Unicode для char16_t:
Как
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 …..?
Мне нужно знать эквивалент u ‘\ u0b7f’, когда у меня просто пустая строка ‘0b7f’
Вам нужно конвертировать 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;
Других решений пока нет …