Ich schreibe zur Zeit ein Programm, das von einem Stück Text, wenn das Stück Text dann folgte eine Option ausnehmen muss. Wenn der Text wahr ist, wird ein Stück Code ausgeführt? Zumindest glaube ich das ist, wie es funktioniert, aber so geht das Programm direkt zum anderen und hält aufgrund der Ausgangszustand Looping es nicht die eine weitere Eingabe von dem Benutzer, die getline() ist nicht fragen?Warum schleift das Programm, anstatt nach Eingabe zu fragen?
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip>
using namespace std;
int main() {
fstream gFile;
int choice;
string gb;
do {
cout << "Student Grade Book Info Program....\n";
cout << "\tPlease Select an Option: (1 or 2) \n" << endl
<< "\t1. Review Grades"
<< "\n\t2. Quit"
<< "\n\tChoose: ";
cin >> choice;
switch (choice) {
case 1:
cout << "\n\tPlease Enter the Name of the File you wish to View the Grades for: " << endl;
cout << "\n\tAvailable Grade Books: gradeBook\n" <<
"\tType in the Grade Book you would like to view. ";
getline(cin, gb);
if (gb == "gradeBook") {
cout << "execute code...";
}
else {
cout << "\nError there is no such entry in the system." << endl;
}
case 2:
break;
}
} while (choice != 2);
return 0;
}
ahh ich sehe ich behoben! Es funktionierte! Das ist großartig, vielen Dank. –
Die Erklärung ist gut, aber die Lösung ist bisher irrelevant. Nein, das ist keine gute Lösung, also schränken Sie die Verwendung von getline vor dem Extraktionsoperator ein !! Was ist die Rolle von 'cin.flush()' und 'cin.sync()' und 'cin.ignore()'? – Raindrop7
Was ist der Unterschied zwischen 'getline' und' std :: getline' ??? !!!! – Raindrop7