将数据从 vector<unsigned char> 传输到无符号 char[]

Transfer data from vector<unsigned char> to unsigned char[]

本文关键字:char 传输 gt 无符号 unsigned 数据 vector lt      更新时间:2023-10-16

我有一个返回字节向量(无符号字符(的函数。如何将这些数据放入数组中。显然,向量是连续的虚拟内存,因此应该很容易。我试过这样做

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]’

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

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

请注意,尽管您几乎可以在任何地方直接使用a.data()(无需副本(代替b

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

这是一个简单的解决方案。如果您知道大小,则可以执行以下操作:

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];

编辑

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

vector<unsigned char> a = get_some_bytes(SOME_LENGTH);
unsigned char * b = &a[0];