C++, Wie das Umzusetzen Menü mit Nummer und Brief Wahl
Möchte ich ein Menü in C++, die Optionen hat, die beide in Buchstaben und zahlen. Zum Beispiel könnte die Ausgabe:
========================
(1) Do something
(2) Do something
(a) Do something
(b) Do something
========================
Ist es ein Verfahren zur Prüfung von Benutzereingaben, um zu bestimmen, wenn es ein char oder int und handle entsprechend?
Wenn ich:
int choice;
cin >> choice;
Und die Eingaben des Benutzers einen char, natürlich cin wird ein Fehler zurückgegeben. Ich bin auf der Suche nach einer einfachen Methode zur Prüfung von Benutzereingaben für eine Ziffer oder einen Buchstaben ein und das Programm anders reagieren, basierend auf dieser Bestimmung.
[UPDATE]
Ich habe die Antwort gefunden die ich suchte. Hier ist, wie ich es gemacht habe:
string choice;
cout << "Your choice: ";
cin >> choice;
if( isdigit(choice[0]) )
{
theInt = stoi(wChoice);
//do something with int
}
else if( choice[0] = 'a' )
//do menu option a
std::string choice;
könnten die meisten flexible Daten Typ IMHO.- Warum wurde diese Frage nach unten gestimmt? Einige nützlichen input wäre schön. =P
InformationsquelleAutor Victor Brunell | 2015-04-17
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie besser die Methode
isdigit
imctype.h
um zu überprüfen, ob Zeichen eine Ziffer ist Charakter, und die Methodeisalpha
zu prüfen, ob-Charakter ist alphabetisch.int
nicht enthaltencha
r" das ist sicherlich nicht die (ganze) Wahrheit!Die einfachste Lösung, die ich sehe, ist eine Menü-Auswahl-code wie
Wenn Sie in der Handhabung von numerischen Entscheidungen, die größer als
9
, Sie verwenden einfach einestd::string
als Eingabefeld:wiederum eine
switch
- Anweisung nicht mehr verwendet werden und Sie haben, um es zu ändern, um eineif/else if/else
cascade:Dafür müssen Sie Lesen, in der eine Zeichenfolge eingegeben, dann analysiert werden, um zu sehen, ob es ein alphabetisches Zeichen, oder wenn es eine numerische Zeichenfolge. Etwas entlang der Linien von dieser (Achtung, ich bin meist ein C-Programmierer, so dass die Verwendung von C-strings statt echten Saiten):
Natürlich, Werte benötigen unterschiedliche Namen und code-Pfade, um mit Ihnen umzugehen, besonders als C++ nicht eine gute built-in "entweder" - Typ, den ich kenne.
Alternativ einfach behandeln, alles als ein Zeichen, vorausgesetzt, alle numerischen Optionen sind ein einzelnes Zeichen, und der test als '0' statt 0.
char input[INPUT_SIZE];
char-arrays sowieso?