【发布时间】:2014-09-04 14:59:25
【问题描述】:
请提出一种将字节从基本字符串
我不关心编码,只想将字节复制到字节数组。稍后将使用正确的下游编码对其进行解释。
谢谢。
【问题讨论】:
-
所以你想要在向量中为字符串中的每个字符使用两个整数?
-
是的。我的字符是 UTF-16。所以它是两个字节。
请提出一种将字节从基本字符串
我不关心编码,只想将字节复制到字节数组。稍后将使用正确的下游编码对其进行解释。
谢谢。
【问题讨论】:
一种选择是获取数据指针,将其转换为您的新类型并将其分配给您的目标向量:
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类型。
【讨论】:
char16_t 的数组被按位解释为uint8_t 的数组。