Итак, я пытаюсь написать программу, которая выполняет ту же задачу, что и grep.В конце я хочу программу, которая принимает четыре аргумента, второй - что искать, третий - входной файл, а четвертый - выходной файл.Я думаю, что у меня есть хорошее представление о том, как это сделать, но, как обычно, теория проста и реальное программирование меня запутывает.В основном, где я сейчас нахожусь, у меня есть файл, и я пытаюсь найти его и получить все строки, которые содержат то, что я ищу, а также строку этого числа.
Я хочу использовать вектор для решения этой задачи.Я не совсем уверен, как это сделать.Будет ли проще пройти и добавить каждую строку к вектору по отдельности, а затем пройти и выбрать те, которые содержат желаемую строку в них, и использовать расположение массива в качестве номера строки?Я хотел бы думать, что есть способ только добавить те строки в вектор, которые содержат желаемую строку, но тогда я не уверен, как получить номер строки.Я начал пару раз, а затем стер то, что я понял, когда понял, что все неправильно.
Вот где я сейчас:
#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;
}
}
}