我将相同的值放在不同的容器(向量和数组)中,并通过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));
。