将数据从vector <unsigned char =“”>传输到unsigned char []

时间:2018-01-09 13:53:07

标签: c++ arrays vector

我有一个返回字节向量的函数(unsigned chars)。如何将数据转换为数组。显然,向量是连续的虚拟内存,因此应该很容易。我试过这个

std::vector<unsigned char> a;
unsigned char* b = &a[0];

但我没有运气。

我的代码看起来像这样

// 20 is length of returned vector
const int SOME_LENGTH = 20;
vector<unsigned char> a = get_some_bytes(SOME_LENGTH);
unsigned char b[SOME_LENGTH];
b = &a;

但我收到此错误

error: incompatible types in assignment of ‘std::vector<unsigned
char>*’ to ‘unsigned char [20]’

2 个答案:

答案 0 :(得分:3)

只需将矢量数据中的字节复制到数组中:

std::copy(begin(a), end(a), b);

请注意,您可以直接使用a.data()(无需复制)代替b几乎无处不在。

答案 1 :(得分:0)

你不能像那样初始化数组。 你必须使用指针。

这是一个简单的解决方案。 如果您知道尺寸,可以这样做:

SaveChanges()

但是如果你不知道大小,那么你必须使用const size_t SIZE = 5000; // for example unsigned char b[SIZE]; for(int i = 0; i < a.size(); i++) b[i] = a[i]; 运算符

new

修改

在您的情况下,您可以这样做:

unsigned char * b = new unsigned[a.size()];
for(int i = 0; i < a.size(); i++)
   b[i] = a[i];