如何复制和截断/填充数组

How to copy and truncate/pad an array

本文关键字:填充 数组 何复制 复制      更新时间:2023-10-16

我有一个数据包的头,其中包含关于发送者的各种信息;我想用C++来解析它。该数组采用字节数组(unsigned char[24])的形式

在Java中,我可能会使用Array.copyOfRange()之类的东西来解析它,以获取前4个字节、后4个字节等。

但在C++中,并没有一种明显的方法可以实现这一点。我已经研究了标准库中的向量、数组和副本,但它们似乎都无法以我想要的方式对数组进行切片(并截断或填充)。

标准库中是否有可以做到这一点的东西,或者我是否需要推出自己的解决方案?

大多数容器都采用指针范围,例如字符串(a+0,a+4)。用指针算法解决这个问题:

unsigned char A[24];
vector<unsigned char> v0(A+0,A+4); // per chunk
for(int i=0; i<24; i+=4) { // or in a loop
    vector<unsigned char> chunk(A+i,A+i+4);
    ...
}