将矢量值复制到char*

Copy Vector values to char*

本文关键字:char 复制      更新时间:2023-10-16

我有三个向量

std::vector<long long unsigned> eightByte_v;
std::vector<unsigned char> oneByteDelta_v;
std::vector<unsigned short> twoByteDelta_v;

我在向量中分别插入了两个值

eightByte_v.pushback(0x111111111111);
eightByte_v.pushback(0x2222222222222222);
oneByteDelta_v.pushback(0x33);
oneByteDelta_v.pushback(0x44);
twoByteDelta_v.pushback(0x5555);
twoByteDelta_v.pushback(0x6666);

我想将所有向量合并为char*,如下所示。

    char[0] = 00
    char[1] = 00
    char[2] = 11
    char[3] = 11
    char[4] = 11
    char[5] = 11
    char[6] = 11
    char[7] = 11
    char[8] = 22
    char[9] = 22
    char[10] = 22
    char[11] = 22
    char[12] = 22
    char[13] = 22
    char[14] = 22
    char[15] = 22
    char[16] = 22
    char[17] = 22
    char[18] = 33
    char[19] = 44
    char[20] = 55
    char[21] = 55
    char[22] = 66
    char[23] = 66

从char 0到17等于eightByte_v
从char 18到19相当于oneByte_v
从char 20到23相当于twoByte_v

我想我可以用memcpy来做,但有其他方法吗?

提前谢谢!

想到了使用union之类的替代方案,但很难或不可能以定义的方式做到这一点:您总是会遇到结构封装和指针强制转换问题。

考虑到C++标准保证了std::vector中的数据连续性(并且可以使用data()函数访问数据缓冲区(,memcpy可以说是最好的方法。

但请记住,char的符号性取决于平台。你可能想要更明确一些;考虑使用CCD_ 7。