为什么gzwrite向量不同于gzwrite数组,且数组值相同?

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

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

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

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

theresa88520 回答:为什么gzwrite向量不同于gzwrite数组,且数组值相同?

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

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

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

本文链接:https://www.f2er.com/3130014.html

大家都在问