Я некоторое время искал этот вопрос, но всегда получал что-то другое.
У меня есть следующая строка UTF-32: std::u32string utf32s = U"जि";
И я хотел бы преобразовать в UnicodeString:UnicodeString ustr;
Я использую библиотеку ICU 65.1 в C ++ для работы с Unicode String для нормализации и компоновки, я нашел следующую ссылку , которая очень плохо описывает преобразование между строками,Особенно следующее описание:
Преобразование целых строк: u_strFromUTF32()
и u_strFromUTF32()
в ustring.h
.
Доступ к кодовым точкамявляется тривиальным и не требует каких-либо макросов.
Использование конвертера UTF-32 со всеми API преобразования ICU в ucnv.h, в том числе с суффиксом "Algorithmic".
UnicodeString имеет методы fromUTF32()
и toUTF32()
.
Альтернатива, которую я нашел, - это следующая функция шаблона:
template <typename T>
void fromUTF32(const std::u32string& source, std::basic_string<T, std::char_traits<T>, std::allocator<T>>& result)
{
wstring_convert<codecvt_utf8_utf16<T>, T> convertor;
result = convertor.from_bytes(source);
}
Эта функция все равно пытается не распознать UnicodeString как допустимый ввод. Более подробно, учитывая строку (wstring, string, u16string ...), как создать функцию шаблона, чтобы получить ее в виде строки Unicode?
Большое спасибо!