2016-10-25 3 views
-2

Ich möchte überprüfen, ob ein Zeichen tatsächlich ein Zeichen ist. Wenn der Benutzer eine Folge von Buchstaben eingibt, sagt das Programm "abc", dass der Benutzer ein einzelnes Zeichen eingeben muss.Überprüfen, ob ein einzelnes Zeichen char ist

Ich dachte über

if(sizeof(userLetter != 1)) 
{ 
    cout << "Enter only a single letter." 
} 

Das Problem verwendet, ist seit userLetter als ein Zeichen initialisiert wird er automatisch Rest der Buchstaben abschneidet und denkt Benutzereingabe nur einen Buchstaben.

Gibt es eine Möglichkeit zu überprüfen, ob der Benutzer wirklich nur einen Buchstaben eingibt, ohne userLetter als String zu initialisieren?

+6

C++ ist statisch typisiert. Ein Char ist ein Char. – juanchopanza

+0

Lesen Sie die ganze Zeile, nicht nur ein Zeichen. –

+0

Wie machst du die Eingabe? Verwendet es cin oder getline oder etwas anderes? – cup

Antwort

2

Wenn Sie ein Zeichen lesen, liest es nur eins und behält die folgenden Zeichen im Puffer.

Wenn Sie alle nehmen wollen, was die Benutzertypen, bis er die erste drückt eingeben, müssen Sie eine Linie bekommen:

string line; 
while (getline(cin, line) && (line.length()==0 || line.length()>1)) 
    cout << "Enter only a single letter..."<<endl; 

Wenn diese successfuly endet, erhalten die ersten Zeichen der Zeichenfolge mit userLetter = line[0];

Verwandte Themen