C ++ cin question des espaces
-
02-10-2019 - |
Question
Programmation novice ici. Je suis en train de permettre à un utilisateur d'entrer son nom, prenom middleName lastName sur une seule ligne dans la console (ex. « John Doe Jane »). Je veux faire l'option middleName. Donc, si l'utilisateur entre « John Doe » il ne sauve que les première et dernière chaînes de nom. Si l'utilisateur entre « John Doe Jane » il sauvera tous les trois.
J'allais utiliser ceci:
cin >> firstName >> middleName >> lastName;
alors je compris que si l'utilisateur le choisit pour leur prénom omettent et entre « John Doe » la console juste attendre que l'utilisateur d'entrer dans une troisième corde ... Je sais que je pourrais y arriver avec une grande chaîne et de rupture elle en deux ou trois, mais il est pas là un moyen plus simple de le faire avec trois chaînes comme ci-dessus?
Je sens que je manque quelque chose simple ici ...
Merci à l'avance.
La solution
Utilisez getline
puis parse l'aide d'un stringstream
.
#include <sstream>
string line;
getline( cin, line );
istringstream parse( line );
string first, middle, last;
parse >> first >> middle >> last;
if ( last.empty() ) swap( middle, last );