gpt4 book ai didi

c++ - 用 C++ 重写 grep

转载 作者:行者123 更新时间:2023-11-30 03:03:02 24 4
gpt4 key购买 nike

所以我正在尝试编写一个程序来执行与 grep 相同的任务。最后我想要一个带有四个参数的程序,第二个是要搜索的内容,第三个是输入文件,第四个是输出文件。我想我已经很好地掌握了如何去做,但像往常一样,理论很容易,实际的编程让我很困惑。基本上我现在所处的位置是我已经得到了文件,我正在尝试搜索它并获取包含我正在搜索的内容的所有行,以及该数字的行。

我想用一个 vector 来完成这个任务。我不完全确定如何去做。遍历并将每一行分别添加到 vector 中,然后遍历并挑选出其中包含所需字符串并使用其数组位置作为行号的行会更容易吗?我想有一种方法可以只将那些行添加到包含所需字符串的 vector 中,但是我不确定如何获取行号。我已经开始了几次,然后当我意识到这一切都是错误的时候就删除了我的内容。

这是我现在的位置:

#include <iostream>
#include <regex>
#include <string>
#include <fstream>
#include <vector>

using namespace std;

int main (int argc, char* argv[]){

// validate the command line info
if( argc < 2 ) {
cout << "Error: Incorrect number of command line arguments\n"
"Usage: grep\n";
return EXIT_FAILURE;
}

//Declare the arguments of the array
string query = argv[1];
string inputFileName = argv[2];
string outputFileName = argv [3];

// Validate that the file is there and open it
ifstream infile( inputFileName );
if( !infile ) {
cout << "Error: failed to open <" << inputFileName << ">\n"
"Check filename, path, or it doesn't exist.\n";
return EXIT_FAILURE;
}

else{
vector<string> queries;


}

}

}

最佳答案

无需使用 vector 。在我看来,您应该使用 std::getline 一次一行地检查输入文件,尝试将每个文件与正则表达式进行匹配,并立即输出成功的行。

关于c++ - 用 C++ 重写 grep,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9678058/

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