请提出一种将字节从 basic_string<char16_t> 复制到 vector<uint8_t> 的有效方法。
我不关心编码,只想将字节复制到字节数组。稍后将使用正确的下游编码对其进行解释。
谢谢。
一种选择是获取数据指针,将其转换为您的新类型并将其分配给您的目标向量:
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 表达式不会编译为任何 CPU 指令。它纯粹是一个编译器指令,它指示编译器将表达式的位序列(对象表示)视为具有 typenew_type
。