Преобразовать std :: string в utf-16 (например, u & quot; некоторая строка & quot;); Отладчик сообщает «подходящего преобразования не существует»

На основании моего предыдущего вопроса
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’

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;
0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector