Опция, чтобы получить указатель на данные, приведение его в свой новый тип и назначить его на целевой вектор:
std::basic_string<char16_t> src;
const uint8_t *begin = reinterpret_cast<uint8_t const*>(src.data());
const uint8_t *end = reinterpret_cast<uint8_t const*>(src.data() + src.size());
std::vector<uint8_t> dst(begin,end);
Это один из немногих случаев, когда reinterpret_cast
является совершенно действительным выбором. Из cppreference (основных моментов добавленных мной):
В отличии от static_cast
, но как const_cast
выражения reinterpret_cast не компилировать какие-либо инструкции процессора. Это чисто директива компилятора, которая инструктирует компилятор обрабатывать последовательность бит (представление объекта) выражения , как если бы он имел тип new_type
.
Итак, вы хотите, чтобы два символа в векторе для каждого символа в строке? –
Да. Мой персонаж находится в UTF-16. Так что это два байта. – SkypeMeSM