Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用zlib将字节数组解压缩为字节数组_C++_Sqlite_Gzip_Zlib_Inflate - Fatal编程技术网

C++ 使用zlib将字节数组解压缩为字节数组

C++ 使用zlib将字节数组解压缩为字节数组,c++,sqlite,gzip,zlib,inflate,C++,Sqlite,Gzip,Zlib,Inflate,上下文:我使用的是一个.mbtiles文件,一种geomapping文件格式,它是一个包含向量tiles的sqlite数据库文件 这些向量块使用协议缓冲区打包,然后gzip 我使用C++,目前正在阅读ZLIB使用解压缩示例,但是我不知道如何处理块和流结束事件。 SQLite给了我一个void*指针和一个长度 我引用这一页: 对于zlib流嵌入到其他数据中的应用程序,此 需要修改例程以返回未使用的数据,或者 至少指示有多少输入数据未被使用,因此 应用程序将知道在zlib流之后从何处提取 协议缓冲区

上下文:我使用的是一个.mbtiles文件,一种geomapping文件格式,它是一个包含向量tiles的sqlite数据库文件

这些向量块使用协议缓冲区打包,然后gzip

我使用C++,目前正在阅读ZLIB使用解压缩示例,但是我不知道如何处理块和流结束事件。 SQLite给了我一个void*指针和一个长度

我引用这一页:

对于zlib流嵌入到其他数据中的应用程序,此 需要修改例程以返回未使用的数据,或者 至少指示有多少输入数据未被使用,因此 应用程序将知道在zlib流之后从何处提取

协议缓冲区类方法采用void*或std::string。我想我应该选择void*


我不确定这些事件是如何工作的,而且这个例子似乎没有为字节数组提供一个案例。我应该如何更改代码以避免错误?

听起来SQLite给了您一个zlib流,后面没有任何内容。如果是这样的话,那么这个评论就不适用了

在任何情况下,你都在看。(你没有说“页面”是什么,但我知道这句话是我写的。)这大致说明了如何使用zlib函数。您应该能够了解如何将其应用于字节数组而不是文件输入

如果数据确实是“gzip”,则需要使用
inflateInit2()
而不是
inflateInit()
。读这本书