Write the definition of a function named fscopy that does a line-by-line copy from one stream to another.

LANGUAGE: C++

CHALLENGE:

Write the definition of a function named fscopy that does a line-by-line copy from one stream to another. This function can be safely passed two fstream objects, one opened for reading, the other for writing. In addition, it gets a bool argument that is true if the output lines are to be numbered, and another argument, an int that specifies line-spacing in the output.

Assume that the input source is a text file consisting of a sequence of newline character -terminated lines. The function copies, line by line, the entire content of the data source associated with the first argument to the data target associated with the second argument . It returns the number of lines read in. If it the third parameter , the bool is true, every line that is output is preceded by a 6-position field holding the line number (an integer ) followed by a space and then the actual line. If the last argument, the int is 2 or more, it specifies the line spacing: for example, it is 3, there are two blank lines output after each line printed. These blank lines are NOT numbered.

SOLUTION:


int fscopy(fstream &fsin, fstream &fsout, bool numbered, int spacing) {
	int linecount=0;
	string s;
	getline(fsin, s, '\n');

	while (!fsin.fail()) { 
		linecount++;

		if (numbered){
			fsout << setw(6) << linecount << " ";
		}

		fsout << s << endl;

		for (int i=1; i<spacing; i++){
			fsout << endl;
		}
		
		getline(fsin, s, '\n'); 
	}
	
	return linecount; 
}