8.9k views
0 votes
9. You are given a file consisting of students’ names in the following form: lastName, firstName middleName. (Note that a student may not have a middle name.) Write a program that converts each name to the following form: firstName middleName lastName. Your program must read each student’s entire name in a variable and must consist of a function that takes as input a string, consists of a student’s name, and returns the string consisting of the altered name. Use the string function find to find the index of ,; the function length to find the length of the string; and the function substr to extract the firstName, middleName, and lastName.

User Hrshd
by
5.8k points

2 Answers

4 votes

Final answer:

To convert each student's name to the desired format, you can use the provided string functions in a step-by-step process.

Step-by-step explanation:

To convert each student's name to the format firstName middleName lastName, you can use the string functions provided in the question. Here is a step-by-step explanation:

  1. Read the input name into a variable.
  2. Find the index of the comma using the find function.
  3. Use substr to extract the lastName, firstName, and middleName based on their positions.
  4. Concatenate the firstName, middleName, and lastName in the desired format.
  5. Return the altered name as the output.

For example, if the input name is 'Smith, John', the program will output 'John Smith'.

5 votes

Answer:

#include<iostream>

#include<fstream>

#include<string>

using namespace std;

int main ()

{

string firstName, middleName, lastName;

string line;

ifstream infile;

ofstream outfile;

infile.open ("Ch8_Ex9Data.txt");

outfile.open ("Ch8_Ex9Dataout.txt");

while (getline(infile, line))

{

int comma = line.find (',');

int length = line.length ();

lastName = line.substr (0, comma);

int space_after_firstName = line.find (' ', comma + 2);

if (space_after_firstName != -1)

{

firstName = line.substr (comma+2, space_after_firstName - comma -2);

middleName = line.substr(space_after_firstName + 1, length);

outfile << firstName << " " << middleName << " ";

cout << firstName << " " << middleName << " ";

}

else

{

firstName = line.substr (comma+2, length);

outfile << firstName << " ";

cout << firstName << " ";

}

outfile << lastName << endl;

cout << lastName << endl;

}

system("pause");

return 0;

}

Step-by-step explanation:

The program makes use of students’ names in the following form: lastName, firstName middleName as its input parameters.

The program converts each name to the following form: firstName middleName lastName. It also read each student’s entire name in a variable and consist of a function that takes as input a string, consists of a student’s name, and returns the string consisting of the altered name.

User Itsananderson
by
4.7k points