gpt4 book ai didi

c++ - 尝试将 gz 文件提供给 C++ 程序

转载 作者:太空狗 更新时间:2023-10-29 21:45:37 27 4
gpt4 key购买 nike

我有一个 C++ 程序,它有一些命令行选项。其中之一是文件名。文件很大所以我决定压缩它然后尝试找到一种方法让 c++ 程序读取压缩文件而不是纯文本文件。

根据这里所说的How to read a .gz file line-by-line in C++?我尝试了第二个答案,但它不起作用。

假设运行我的程序的正常命令行是

 ./run 1 file.txt 10

现在我跑

 zcat file.gz | ./run 1 file.gz 10

但输出无效。我该如何解决?

附言:

文件看起来像

10 1000
2 39
45 124

读取文件的代码如下所示

char *inp = argv[2];
std::ifstream fin (inp);
int a, b;
while (fin >> a >> b ) {
// somthing
}

最佳答案

针对您的情况,最简单的直接解决方法是更改​​此设置:

char *inp = argv[2];
std::ifstream fin (inp);
int a, b;
while (fin >> a >> b ) {
// something
}

进入这个:

char *inp = argv[2];
int a, b;
while (std::cin >> a >> b ) {
// something
}

我已经替换了 finstd::cin .你需要#include <iostream>如果您还没有这样做的话。

这将从 STDIN 读取,这是管道 | 的位置发送 zcat 的输出.

如果你想保留两个版本——一个从文件读取的版本和一个从 STDIN 读取的版本——你可以使用命令行参数来指示你正在从 STDIN 读取,然后有一个 if -代码中的子句区分这两种用法。

关于c++ - 尝试将 gz 文件提供给 C++ 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17207348/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com