Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Objective: Two operations often performed on text files are a simple \'find\' op

ID: 3568591 • Letter: O

Question

Objective:

Two operations often performed on text files are a simple 'find' operation and a 'find/replace'.

Description:

Create a class Sed (simple editor) that first asks the user if they want the program to act in 'find' mode or 'find/replace' mode.

In find/replace mode: the program should ask the user for 3 items:

The program should read in the file found at 'filename' and replace every instance of the 'find' word with the 'replace' word. The program should then print any output to the filea.out

In find mode: the program instead should ask the user for two items:

The program should read in the file found at 'filename' and find every instance of the 'find' word. Then, printing to the console, the program should print every line that contains the 'find' word along with it's line number.

In either case, you can assume the whitespace in the file only consists of single spaces (' ') or single newline characters (' ').

Example 1 (Find Mode):

//Input: lorem_ipsum.txt

Example 2 (Find/Replace):

//Input: lorem_ipsum.txt

//Output: a.out

**Submit your source code to the dropbox. Remember that your source code MUST have appropriate headers and MUST contain appropriate comments.**

***Okay, so i know this is a lot, but all i have is 1000 points left for this month. i appreciate anything i get.

***Here is loren_ipsum.txt idk if you need it or not, but this is it along with a.out.***

loren_ipsum.txt:

a.out:

Explanation / Answer

#include<iostream>
#include<fstream>
#include<string>
using namespace std;

class Sed {
private:
ifstream myfile;

public:

Sed() {
int choice;

cout << "Select a mode: ";
cout << "1. Find/Replace ";
cout << "2. Find ";
cout << "3. Exit ";

cin>>choice;
  
switch(choice)
{
case 1:
findReplace();
break;
  
case 2:
find();
break;
  
default:
return;
}
}

void find() {
string line;

char inputFile[20];
char toFind[20];
  
/*take input from user */
cout << "Enter the name of a file: ";
cin>>inputFile;
cout << " ";

cout << "Enter a String to find: ";
cin>>toFind;
cout << " ";
  

myfile.open(inputFile); //open the file
  

if (myfile.is_open()) {

int i = 0;

while (getline(myfile, line)) { //read each line by getline function
  
++i; //tracks the line number

size_t found = line.find(toFind); //find if the user required data is found or not
if (found != std::string::npos) {
cout << i << " " << line << " "; //displays if the data is found in the line
}

}

myfile.close(); //file close

} else {
cout << " Unable to open file !! ";
}
}

void findReplace() {
string line;

char inputFile[20];
char toReplace[20] ;
char toFind[20];
  
  
cout << "Enter the name of a file: ";
cin>>inputFile;
cout << " ";

cout << "Enter a String to find: ";
cin>>toFind;
cout << " ";
  

cout << "Enter a String to replace: ";
cin>>toReplace;
cout << " ";
  

myfile.open(inputFile);

if (myfile.is_open()) {//read each line by getline function

int i = 0;

while (getline(myfile, line)) {
++i;

size_t found = line.find(toFind);//find if the user required data is found or not
if (found != std::string::npos) {
  
/* repalaces the found word by the user given word*/
line.replace(found, (sizeof (toFind) / sizeof (char)) - 1, toReplace);
  
  
cout << line << " "; //displays the line
}

}


myfile.close();//file close

} else {
cout << " Unable to open file !! ";
}
}

};

int main() {

Sed obj; //calls the constructor of the class Sed object obj


return 0;
}

-------------------------------------------------------

OUTPUT

Select a mode:
1. Find/Replace
2. Find
3. Exit
2
Enter the name of a file: input.txt

Enter a String to find: Donec

1 Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam
3 viverra nec consectetur ante hendrerit. Donec et mollis dolor.
6 Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum
11 Ut convallis libero in urna ultrices accumsan. Donec sed odio eros.
12 Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus.