2016-04-02 11 views
0

Ich verwende mehrere getline(cin, string) Aufrufe, um zwei Strings zu erhalten; Der Code überspringt jedoch den zweiten Anruf und behandelt nur den ersten.Mehrere Getline-Aufrufe verwenden, um mehrere Zeilen zu lesen

for (int i = 0; i < 2; ++i) 
{ 
    if (i == 0) 
    { 
     cout << "Please enter string A: " << endl; 
     getline(cin, stringA); 
    } 

    if (i == 1) 
    { 
     cout << "Please enter string B: " << endl; 
     cin.ignore(); 
     getline(cin, stringB); 
    } 
} 

Wie kann ich das mehrere getline zu behandeln ändern() ruft?

enter image description here

Antwort

0

kann nicht mit dem Code gegeben schlechtes Verhalten reproduzieren. Fehler kann woanders sein.

Unabhängig davon, kann der Code viel einfacher sein, und dass andere Probleme lösen können:

cout << "Please enter string A: " << endl; 
getline(cin, stringA); 
cout << "Please enter string B: " << endl; 
cin.ignore(); 
getline(cin, stringB); 

Die for Schleife können Sie den gleichen Code über mit kleinen Unterschieden in den Parametern durch Wiederholung duplizierten Code beseitigen. Es gibt keinen doppelten Code, so dass for hier nichts für Sie tut.

Nicht sicher, was das Ziel der cin.ignore() Linie ist. Es wird das erste Zeichen der zweiten Eingabezeile verwerfen. Wenn das ist, was Sie wollen, groovy wenn nicht, überdenken Sie es.