请建议一个有效的方法来从basic_string < char16_t>复制字节到矢量< uint8_t>。复制一个basic_string <char16_t>到矢量<uint8_t>
我不关心编码,只是想复制字节到bytearray。稍后将在下游使用正确的编码进行解释。
谢谢。
请建议一个有效的方法来从basic_string < char16_t>复制字节到矢量< uint8_t>。复制一个basic_string <char16_t>到矢量<uint8_t>
我不关心编码,只是想复制字节到bytearray。稍后将在下游使用正确的编码进行解释。
谢谢。
一种选择是让数据指针,将它转换为新的类型,并将其分配给您的目标向量:
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
。
所以,你想在字符串中的每个字符矢量的两个整数? – 2014-09-04 15:03:05
是的。我的字符是UTF-16。所以它是两个字节。 – SkypeMeSM 2014-09-04 18:04:29