C++ 在使用gzstream和gzip文件时,如何保持流的位置?

C++ 在使用gzstream和gzip文件时,如何保持流的位置?,c++,gzip,C++,Gzip,我必须处理用gzip压缩的大文件。我需要访问行的子集,不一定按顺序。因此,我想在记录我感兴趣的行的流位置时,一次性浏览所有文件。然后,使用这些流位置快速检索我需要的信息 为此,我正在使用。但不幸的是,tellg似乎无法使用此包装: 包括 包括 使用名称空间std; 包括 int main int argc,字符**argv { 字符串填充; 弦线; 系统rm-f infile1.txt;echo\to1\ntoto2\ntoto3\>infile1.txt; inflee=infle1.txt;

我必须处理用gzip压缩的大文件。我需要访问行的子集,不一定按顺序。因此,我想在记录我感兴趣的行的流位置时,一次性浏览所有文件。然后,使用这些流位置快速检索我需要的信息

为此,我正在使用。但不幸的是,tellg似乎无法使用此包装:

包括 包括 使用名称空间std; 包括 int main int argc,字符**argv { 字符串填充; 弦线; 系统rm-f infile1.txt;echo\to1\ntoto2\ntoto3\>infile1.txt; inflee=infle1.txt; 流内流; 河道内露天填充物c_街;
coutgzstream不支持在文件中查找,而且这在gzip文件中不是特别有效的操作。您可以查看此问题及其答案:

其中一个答案提供了zlib源代码示例代码的链接,您可以使用该示例代码帮助您在gzstream中实现所需的功能。另一个答案建议使用一种变体压缩格式,该格式支持更高效的搜索


Boost iostream可能支持查找,但gzstream更易于使用和修改,因此我倾向于坚持使用它。

gzstream不支持在文件中查找,而且在gzipped文件中这并不是一个特别有效的操作。您可以查看此问题及其答案:

其中一个答案提供了zlib源代码示例代码的链接,您可以使用该示例代码帮助您在gzstream中实现所需的功能。另一个答案建议使用一种变体压缩格式,该格式支持更高效的搜索


Boost iostream可能支持搜索,但gzstream更易于使用和修改,因此我倾向于坚持使用它。

谢谢。事实上,建议使用变体压缩格式变体但非常接近gzip的答案非常有用。这里提供了更详细的答案:谢谢。确实,建议使用变体压缩格式的答案非常有用格式变体但非常接近gzip非常有用。此处提供了更详细的答案:
$ gcc -Wall test.cpp -lstdc++ -lgzstream -lz
$ ./a.out
0
6
18446744073709551615
18446744073709551615