Mit cin.get() zu packen, eine Zeile text, dann werden in einer Schleife angezeigt, die Zeile?
Ok, also ich kam über dieses code-Schnipsel in meinem lehrbuch, das soll ein echo alle anderen Charaktere, die ein Benutzer eingibt. Nun, ich verstehe das jeder anderer Charakter Teil, aber ich habe Schwierigkeiten mit der Verwendung von cin.get(). Ich verstehe, warum die erste cin.get() gibt es, aber warum ist es auch innerhalb der Schleife? Ich vermute, ich bin nicht ganz erfassen die Art von input-streams...
EDIT: Es ist nur angeklickt... ich bin ein idiot. Danke für die Aufklärung.
char next;
int count = 0;
cout << "Enter a line of input:\n";
cin.get(next);
while (next != '\n')
{
if ((count%2) == 0)
cout << next;
count++;
cin.get(next);
}
Vielen Dank im Voraus!
Du musst angemeldet sein, um einen Kommentar abzugeben.
cin.get
in diesem Fall nicht "fassen Sie eine Zeile mit text", wie Sie zu glauben scheinen.cin.get
in diesem Fall greift nur ein einzelnes Zeichen. Mitcin.get
Sie Lesen die Zeichen der Benutzer eingeben, eins nach dem anderen, einer nach dem anderen. Dies ist, warum Siecin.get
in einer Schleife.Den Aufruf von cin.Holen Sie sich(weiter) vor der Schleife ist nur das Inverkehrbringen der ersten Zeichen von gepufferten Benutzereingaben in der Variablen 'weiter'.
Einmal innerhalb der Schleife, und die Zeichen gespeichert, die in 'weiter' verarbeitet wurde (echo, wenn ein noch-index, ansonsten ignoriert), cin.get(next) muss erneut aufgerufen werden, um das nächste Zeichen.
Seine druckbare Zeichen präsentieren, der selbst bei Positionen
Benötigen wir zwei
cin.get(...)
aber was ist die Verwendung von außerhalb cin.get(ch) was hat es zu tun
wie cin.get() innerhalb der Schleife
beide Verhaltensweisen sind lookin verschiedenen
so macht es verwirrend
es ist eine Anweisung in der Schleife zum drucken der Zeichen bekam mit cin.get(next), aber es wird nicht gedruckt.... es wird gedruckt, alle zusammen nach drücken der enter-Taste ... eigentlich sollte es die Zeichen angezeigt, wie wir geben Sie aus der Tastatur, aber ist es nicht eigentlich so, dass
istream& get(char &c) wird ein Zeichen aus dem Eingabe-stream.
so auf den ersten Aufruf von cin.bekommen(nächsten), die Sie eingegeben haben:
"Hallo Welt!"
Dann Zukunft cin.Holen Sie sich(weiter) zu Holen h, e, l, l, etc... bei jedem Aufruf, bis der es nicht mehr Zeichen im input-stream-und die, wenn Sie blockiert werden, um dem Benutzer weitere Eingaben.
Streams in C++ , gepuffert werden. Denken Sie an Sie als eine Linie von Buchstaben. Wenn Sie anrufen
cin.get(var)
das erste Zeichen in dieser Zeile wird entfernt und zurückgegeben. Also, das ist, wie es funktioniert.Ein Beispiel würde helfen, besser. Wenn das erste cin.get() ausgeführt wird, angenommen, Sie geben in :
LISP
und dann, cin.get() zurück (in der var.)
L
und dann wird der Puffer AussehenISP
... der nächste Anruf wird PlatzI
in der var. und die Puffer sehen aus wieSP
und so weiter...