Программа ищет указанное пользователем слово и заменяет его на другое указанное. (текст берется из указанного файла и записывается в указанный.) Программа пишет сколько раз встретилось указанное слово.
Не могли доделать программу, чтобы она еще и предложения выводила, каждое с новой строки и если можно, то слово для поиска и для замены было бы не одно. (то есть можно было бы указвать их через запятую).
Вот код.
| Код | #include <cstdlib> #include <iostream> #include <fstream> using namespace std; int main(int argc, char *argv[]) { char buffer[1]; int i,q=0; long currentpos; bool match = false; if (argc != 5) { cout <<"Usage: pull [search string] [replace string] " << "[file_to_read] [file_to_write]" << endl; return 1; } string searchstring = argv[1]; string replacestring = argv[2]; string infilename = argv[3]; string outfilename = argv[4];
ifstream input (infilename. c_str () , ios:: in) ; if (input.fail()) { cout << "Unable to open damn file to read!" << endl; return 1; } ofstream output(outfilename.c_str(), ios::out | ios::trunc); if (output.fail()) { cout << "Unable to open damn file to write!" << endl; return 1; } while (!input.eof()) { currentpos = input.tellg(); input.read(buffer, sizeof(buffer)); if (buffer[0] = searchstring[0]) {
match = true; i = 1; while (i < searchstring.length() && match) { input.read(buffer, sizeof(buffer)); if (buffer[0] != searchstring[i]) { input.seekg(currentpos); input.read(buffer, sizeof(buffer)); match = false; } else i++; } } if (match) { output.write(replacestring.c_str(), replacestring.length()); q++; match = false; } else output.write(buffer, sizeof(buffer)); } input.close(); output.close(); ifstream display(outfilename.c_str(), ios::in); while (!display.eof()) { display.read(buffer, sizeof(buffer)); if (display.good())
cout << buffer[0];
} cout<<"\nVhozdenie_slova:_____"<<q<<endl; display.close(); return 0; }
|
Спасибо заранее.
|