Wie liest Zeichen von der Konsole in c++?
Ich habe Mühe mit Lesen von Zeichen von der Konsole in c++.
Hier ist, was ich versuchte zu tun:
char x;
char y;
char z;
cout<<"Please enter your string: ";
string s;
getline(cin,s);
istringstream is(s);
is>> x >> y >> z;
Ist das problem wenn der Benutzer geben Sie etwas wie dieses "1 20 100":
x will get 1
y will get 2
z will get 0
Was ich will zu bekommen, ist x = 1; y = 20; z = 100;
Jemand Vorschläge?
- char {x|y|z -} - > int {x|y|z}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wollen Sie nicht Lesen Sie die Zeichen, sondern ganze zahlen.
short int
(die möglicherweise oder möglicherweise nicht weniger als 4 bytes, je nach compiler und Architektur), aber ich garantiere Ihnen, dass wenn Sie Probleme mit etwas so grundlegend, Sie sind einen langen Weg brauchen, um sorgen über die Optimierung von speichern 9 bytes Speicher auf dem stack.string
dynamisch zuweist, nimmt ein bisschen mehr Platz, Ströme im Allgemeinen nicht Angst, stack-Variablen, etc.Du bist fast da.
operator>>()
ist die formatiert extraction-operator. Ändern Sie die Variablen vom Typchar
zu gebenint
und du bist gut zu gehen.Es klingt wie Sie Lesen wollen, in ganzen zahlen. Sie tun konnten:
Der Grund, warum Sie immer diese Ergebnisse ist, dass, da x,y und z sind chars, wenn Sie istringstream es liest das erste Zeichen in x, es überspringt den Raum und liest das Zeichen '2' in y und das nächste Zeichen '0' und das geht in z ist.
Wenn das nicht funktioniert, verwenden Sie einfach ints, weil Sie versuchen zu finden, eine Problemumgehung verwenden chars anstatt von ints um Speicher zu sparen ist, sich Gedanken über die falschen Dinge hier.