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