Wczytywanie pustych ciagów znaków string

0

Witam, mam problem z programem wczytującym imię, drugie imię i nazwisko, np:
dla wejscia:

 
Adam Jan Kowalski

daje wyjście:

 
Kowalski, Adam J.

Problem zaczyna sie w momencie kiedy użytkownik nie poda drugiego imienia lecz tylko imię i nazwisko.

Dla wejscia:

Adam Kowalski

Program powinien dawać wyjście:

 
Kowalski, Adam

A u mnie czeka na podanie 3 wyrazów. Nic zresztą w tym dziwnego jeśli podałem, że ma wczytać trzy
ciągi znakowe. Nie wiem jak zmodyfikować kod aby wczytywał pusty ciąg na zmienną inicjał(drugie imię),
gdy użytkownik nie poda drugiego imienia.

Oto mój kod:

#include<iostream>
#include<string>

using namespace std;

string zwroc_inicjal(const string& s, const string& d)
{
     if (s.length() > 0 && d.length() > 0)
     cout << s[0] << ". ";
}

int main( )
{
    string imie, nazwisko, inicjal;
    cout << "Podaj imie, inicjal(badz drugie imie) i nazwisko: \n";
    cin >> imie
        >> inicjal >> nazwisko;
    cout << nazwisko << ", " <<  imie << " ";
    zwroc_inicjal(inicjal, nazwisko);
    system("pause");
    return 0;
}

0

Zamiast cin >> imie >> inicjal >> nazwisko; wczytaj całą linię przez std::getline() i dopiero na niej pracuj za pomocą std::stringstream mniej więcej tak samo jak działasz teraz na cin.

1 użytkowników online, w tym zalogowanych: 0, gości: 1