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; }