0

I need to input 3 full names separated by commas

Full Name 1: John, Smith, Flynn
Full Name 2: Walter, Kennedy, Roberts
Full Name 3: Sam, Bass, Clinton


Then output it like this

First Name 1: John
First Name 2: Walter
First Name 3: Sam


Middle Name 1: Smith
Middle Name 2: Kennedy
Middle Name 3: Bass


Last Name 1: Flynn
Last Name 2: Roberts
Last Name 3: Clinton


How do i do these? so far this is my code

include #<iostream>
include #<cstdio>
include #<cstring>
using namespace std;

int main () { char first[3][100]; char middle[3][100]; char last[3][100]; char full[3][100]; int i;

cout << "Enter 3 Full Names <first, middle and last names separated by comma>:" << endl; for (i=0; i<3; i++) {  cout << "Full Name " << i+1 << ":" ; gets (full[i]); }

cout << "The first names are: " << endl; for (i=0; i<3; i++) {     strcpy (first[i], full[i]);   if (strcmp (first[i], ", ")) {     cout << "First Name "<< i+1 << ":" ;  strcpy ( first[i], full[i] );  cout << (first[i]);  cout << endl; } } cout << "The middle names are: " << endl; for (i=0; i<3; i++) {

cout << "Middle Name "<< i+1 << ":" ; cout << (middle[i]); cout << endl; }

cout << "The last names are: " << endl; for (i=0; i<3; i++) {

cout << "Last Name "<< i+1 << ":" ; cout << (last[i]); cout << endl; }

system("pause"); return 0; }
5
Contributors
8
Replies
11
Views
6 Years
Discussion Span
Last Post by jonsca
0

Normally, you would do this with a string stream (or the input stream if you like). For instance, getline will take a delimiter:

std::cout << "First names: ";
    std::string token;
    getline ( std::cin, token, ',' );
    std::cout << "Read token: " << token << std::endl;
    getline ( std::cin, token, ',' );
    std::cout << "Read token: " << token << std::endl;
    getline ( std::cin, token );
    std::cout << "Read token: " << token << std::endl;

Which produces

First names: Frank,Sylvia,Thomas
Read token: Frank
Read token: Sylvia
Read token: Thomas

This is not very robust (spaces will not be handled correctly) but it gives you an idea of where to start.

-2

Here you go. Let me know if you find any problems - I wrote this while half asleep.

#include <iostream>
#include <vector>
using namespace std;

bool isDelim(const char& query, const string& delimList){
    for(int i = 0; i < delimList.length(); i++)
        if(query == delimList[i])
            return true;
    return false;
}

vector<string> split(const string& line, const string& delimList){
    int len = line.length();
    string temp;
    vector<string> output;
    for(int i = 0; i < len; i++){
        if(isDelim(line[i], delimList)){
            if(temp.length() > 0)
                output.push_back(temp);
            temp.clear();
        }
        else
            temp += line[i];
    }
    if(temp.length() > 0)
        output.push_back(temp);
    return output;
}

int main(){
    string    input;
    string    delimList;
    vector<string>    inputSplit;
    
    cout << "Type something: ";
    getline(cin, input);
    cout << "What are your delimiters? ";
    getline(cin, delimList);
    
    inputSplit = split(input, delimList);
    
    for(int i = 0; i < inputSplit.size(); i++)
        cout << inputSplit[i] << endl;
        
    return 0;
}

Edited by user422: n/a

Votes + Comments
We are not a coding service. Do not post working answers
Do not give entire answers to a problem
0

No, "here you go" is not acceptable. One, you've probably overshot the OPs progress in his course by a couple miles and two, that is not a way to teach anyone anything -- how does handing him something help him learn?

Edited by jonsca: n/a

0

We are not allowed to use
#include <vector>

Just iostream, cstring and cstdio!

Can someone post an example of a single string then separating it into 3 multiple strings?

Im just learning C++ so please simplify it :)
Thank You.

0

Sorry everyone!

OP, in the future, please explicitly state that your question/problem is coursework related and a brief note about your level of experience.

@jonsca, at the time, I honestly didn't think about it being a homework problem. I "usually" never give out free answers. My apologies.

Edited by user422: n/a

0

Well, there is a simple way to do it if you are restricted to iostream, cstring and cstdio.

A simple modification of L7Sqr's code to use C-strings instead:

std::cout << "First names: ";
    char token[100];
    std::cin.getline ( token, ',' );
    std::cout << "Read token: " << token << std::endl;
    std::cin.getline ( token, ',' );
    std::cout << "Read token: " << token << std::endl;
    std::cin.getline ( token );
    std::cout << "Read token: " << token << std::endl;
This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.