将basic_string复制到<char16_t>矢量<uint8_t>

Copy a basic_string<char16_t> to vector<uint8_t>

本文关键字:gt lt string 矢量 uint8 复制 char16 basic      更新时间:2023-10-16

请建议一种从basic_string<char16_t>到向量<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一样,interpret_cast表达式不编译为任何CPU指令。它纯粹是一个编译器指令,指示编译器将表达式的位序列(对象表示)视为类型new_type