1

请提出一种将字节从 basic_string<char16_t> 复制到 vector<uint8_t> 的有效方法。

我不关心编码,只想将字节复制到字节数组。稍后将使用正确的下游编码对其进行解释。

谢谢。

4

1 回答 1

4

一种选择是获取数据指针,将其转换为您的新类型并将其分配给您的目标向量:

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

于 2014-09-04T15:14:05.350 回答