2016-09-19 4 views
0

Ich habe ein seltsames Problem hier. Ich erhalte 2 Strings als Eingabe unter Verwendung des Codes:C++ getline(); zeigt einen unter

std::string input1, input2; 
std::cout<<"Please enter name:"; 
std::getline(std::cin, input1); 
std::cout<<"Address: "; 
std::getline(std::cin,input2); 

Das Problem, das ich habe, ist, dass statt einer nach dem anderen die Anzeige, die beide Anzeige auf einmal, so dass die Ausgabe wie folgt aussieht:

Please enter name: Address:

Als Folge wird keiner der beiden Strings Eingaben gemacht.

Irgendwelche Ideen, was das Problem sein könnte?

+2

'std :: cout >>" Bitte geben Sie den Namen ein: ";' ?! Wie hast du das kompilieren bekommen? Es sollte '<<' sein. –

+0

@AmiTavory oops kopierte es falsch – JAPK

+1

Können Sie ein [mcve] zeigen? Gibt es vorher noch andere Eingaben? Wie starten Sie das Programm? – Angew

Antwort

3

Versuchen Sie es mit cin.ignore() vor getline // ignoriert \ n, die gedrückt wird, nachdem Benutzer verlassen wurde Enter-Taste

+0

Das ist es, danke – JAPK

+2

@JohnKressel Das bedeutet jedoch, dass * vorher * eine Eingabe gemacht werden musste (im Gegensatz zu dem, was Sie in Kommentaren gesagt haben). Der Eingabestream ist beim Programmstart leer. – Angew

0

Verwenden Sie keine

cin.ignore(); 

Da in Schleife ignorieren Sie erforderlich Eingabe ebenfalls. Verwenden Sie

cin>>ws; 

Bevor Getline. ws bedeutet Leerzeichen, das wird Leerzeichen in Ihrem Programm ignorieren und der Code wird gut funktionieren.