逐行读取压缩文件的输入数据
read input data gzipped file line by line
我知道有些人已经写过这个问题;但是,这个问题我还不太清楚。我需要读取包含未格式化数据的压缩文件。我没有成功地尝试从zlib和gzstream网站的说明。有没有人可以为我提供一个快速的例子,如何使用ifstream直接从压缩的gzip文件中提取数据?我使用数据文件的步骤如下:
#include <iostream>
#include <sstream>
#include <string>
int main () {
ifstream file;
string stringtemp;
stringstream line2convert;
file.open("directory/file.dat");
// read each line using a for loop (I know the total number of lines)
file.getline (line,100);
// extract information line by line using stringstreams
line2convert << line;
line2convert >> int2convert;
...
...
...
}
谁能给我一个提示,我需要添加几行?
谢谢!- F
如果你知道如何在gzstream中链接,你可以这样做
将"ifstream"替换为"igzstream"
.
一种令人厌恶的方法是在输入文件上执行gzip -c
,并使用popen(3)
之类的东西从gzip(1)
进程读取标准输出。它将尽可能少地解压缩以满足进程的读请求。但是它确实需要在系统上安装gzip(1)
,这不是理想的,但对于您的应用程序来说可能是一个合适的权衡。
gzip(1)
副本?请注意,zlib和其他所有东西一样存在安全漏洞,当zlib
出现一个安全问题时,当用户需要更新一打不同的应用程序时,他们不会感到惊讶。
你也可以自己编写代码来递增地解密输入的部分,并用解密的数据填充你的c++流对象。这种方法会增加工作量,但不会依赖于在进程之间复制数据,因此它可能运行得更快,并且可能比依赖系统提供的gzip(1)
可执行文件更安全。
相关文章:
- 我的程序没有从文件中读取并输入数据
- 输入数据成员未按要求工作
- 使用 pybind11 调用 Python 函数时避免复制输入数据
- 使用 python 或 c ++ 中的 sql 根据输入数据输出输出示例
- c++用输入数据创建数组
- Caffe 或 Caffe2 可以直接从 GPU 获得输入数据吗?
- C++ QTextDocument::contentChange() 信号提供无效的输入数据
- boost::asio 以async_read复制输入数据
- 输入数据类型检查循环未按预期工作 (C++)
- SVM 训练时间是否取决于输入数据的内容?
- 将用户输入数据相加
- 在线评委如何传递输入数据?
- 如何传递私有地图和输入数据
- C++ 将用户输入数据用于多个函数
- 通过按空格键结束键盘输入数据,而不是输入键 c/c++
- 如何为作为雇员类的指针传入的构造函数输入数据
- C++:检查输入数据
- 关于输入数据
- 防止在管道中输入数据时退出
- C/C++中固定长度实输入数据的高效二维FFT