【发布时间】:2015-09-26 08:03:18
【问题描述】:
我有两个向量。
一个是
std::vector<unsigned char> one_v;
另一个是
std::vector<bool> outputValuesInBits;
我将值推送到 one_v 和 outputValuesInBits。
两个向量都有两个字节。
one_v[0] 和 [1] 填充了 2 个字节的数据。
outputValuesInBits[0] 到 [15] 填充了 2 个字节的数据。
现在,我想复制(memcpy)数据到 char 数组。
我可以成功地从 one_v 向量中复制数据,如下所示。
unsigned char* output = new unsigned char[one_v.size()]();
memcpy(&output, one_v.data(), 2);
但我无法从 outputValuesInBits 复制数据。
如果我这样做,
unsigned char* output = new unsigned char[outputValuesInBits.size()/8+1]();
memcpy(&output, outputValuesInBits.data(), 2);
它给了我一个错误
error: invalid use of void expression
memcpy(&output, outputValuesInBits.data(), 2);
谁能告诉我如何将 bool 向量复制到 char 数组?
提前谢谢你!
【问题讨论】:
-
"存储不一定是 bool 值的数组,但库实现可能会优化存储,以便每个值都存储在一个位中。" - cplusplus.com/reference/vector/vector-bool - 关键是你不能依赖布局。