我将相同的值放在不同的容器(向量和数组)中,并通过zlib lib gzwrite它们,但是结果是不同的。

函数gzwrite将未签名的char []写入gz文件

gzFile fi = gzopen(geopath, "wb");
unsigned char a[]= { 'n','h','h' };
vector<unsigned char> b({ 'n','h','h' });
gzwrite(fi, a, size(a));
//gzwrite(fi,&b, size(b));
gzclose(fi);


写数组的输出是那个6E6868(预期结果)
写向量的输出是00AF27

最佳答案

vector<unsigned char> b({ 'n','h','h' });
gzwrite(fi,&b, size(b));


在这里,您将指向整个b变量的指针,该变量包含std::vector的内部大小和容量字段。

请改用gzwrite(fi, b.data(), size(b));

09-07 07:24