如何在 C++ 中使用 fopen(或与 fopen 具有相同 return 值的函数)打开 gzip 文件?
How to open a gzip file using fopen (or a function with the same return value as fopen) in C++?
我目前有一些代码读取未压缩的文件,它使用以下方法在C++中读取文件
FILE* id = fopen("myfile.dat", "r");
获得id后,代码的不同部分使用fread、fseek[=29=访问文件],等等
我想修改我的代码以便打开文件的 gzip 版本,例如"myfile.dat.gz"不需要改变太多。
理想情况下,我会为 fopen 实现一个包装器,称之为 fopen2,它可以读取 myfile.dat 和 myfile.dat.gz,即它应该 return 一个指向 FILE 对象的指针, 这样剩下的代码就不用改了。
有什么建议吗?
谢谢。
PS:如果这个方法能解决的话,把整个文件解压到内存就好了
zlib 提供 fopen()
、fread()
等的类似物,称为 gzopen()
、gzread()
等,用于读取和写入 gzip 文件。如果文件不是 gzip 压缩的,它将像 f
函数一样被读取。所以你只需要在 zlib.
中更改函数名称和 link
我目前有一些代码读取未压缩的文件,它使用以下方法在C++中读取文件
FILE* id = fopen("myfile.dat", "r");
获得id后,代码的不同部分使用fread、fseek[=29=访问文件],等等
我想修改我的代码以便打开文件的 gzip 版本,例如"myfile.dat.gz"不需要改变太多。
理想情况下,我会为 fopen 实现一个包装器,称之为 fopen2,它可以读取 myfile.dat 和 myfile.dat.gz,即它应该 return 一个指向 FILE 对象的指针, 这样剩下的代码就不用改了。
有什么建议吗?
谢谢。
PS:如果这个方法能解决的话,把整个文件解压到内存就好了
zlib 提供 fopen()
、fread()
等的类似物,称为 gzopen()
、gzread()
等,用于读取和写入 gzip 文件。如果文件不是 gzip 压缩的,它将像 f
函数一样被读取。所以你只需要在 zlib.