Unterschied zwischen cin.get() und cin.getline()
Ich bin neu in der Programmierung, und ich habe einige Fragen zu get()
und getline()
- Funktionen in C++.
Mein Verständnis für die beiden Funktionen:
Den getline()
Funktion liest eine ganze Zeile, und mit dem neue-Zeile-Zeichen übertragen, indem Sie die Enter-Taste zu markieren, das Ende der Eingabe. Die get()
Funktion ist ähnlich wie getline()
aber anstatt zu Lesen und verwerfen Sie das newline-Zeichen, get()
Blätter, Zeichen in die Eingabe-queue.
Dem Buch(C++ Primer Plus) , die ich lese, ist darauf hindeutet, mit get()
über getline()
. Meine Verwirrung ist, dass nicht getline()
sicherer als get()
da macht es sicher zu Ende Einklang mit '\n'
. Auf der anderen Seite get()
wird hängt nur das Zeichen in der Eingabe-queue, wodurch möglicherweise verursacht problem?
InformationsquelleAutor Yu Zhou | 2014-11-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es eine äquivalente Anzahl von Vorteile und Nachteile, und -im wesentlichen - alles hängt davon ab, was Sie Lesen:
get()
verlässt das Trennzeichen in der Warteschlange, so dass Sie in der Lage, betrachten es als Teil der nächsten Eingabe.getline()
verwirft, so dass der nächste Eingang wird nur nach es.Wenn Sie sprechen über die neue-Zeile-Zeichen von der Konsole aus die Eingabe,es macht durchaus Sinn, um es zu entsorgen, aber wenn wir Bedenken, dass eine Eingabe aus einer Datei, die Sie verwenden können, als "Trennzeichen" den Anfang des nächsten Felds.
Was ist "gut" oder "sicher" zu tun, hängt davon ab, was Sie tun.
Die maximale Anzahl der Zeichen, die eingegeben werden können, indem der Benutzer ist
std::numeric_limits<std::streamsize>::max()
. Wenn Sie den stream-Puffer ueberlaeuft dann das error-flagstd::ios_base::badbit
gesetzt werden.InformationsquelleAutor Emilio Garavaglia
get()
Extrakte von char zu char aus einem stream und gibt seinen Wert zurück (gegossen in eine Ganzzahl) in der Erwägung, dassgetline()
genutzt wird, um eine Zeile aus einer Datei Zeile für Zeile. Normalerweise getline verwendet wird, heraus zu filtern Trennzeichen in Anwendungen, wo Sie eine flache Datei(mit tausenden von Zeile) und extrahieren möchten, die Ausgabe(Zeilen -) Verwendung bestimmter Trennzeichen und führen Sie dann eine operation auf Sie.InformationsquelleAutor Shubham Aggarwal
cin.get() übernimmt die Eingabe der ganzen Zeile, die enthält end-of-line-Raum zu wiederholen wird verbrauchen die nächste ganze Linie, aber getline() wird verwendet, um eine Zeile aus einer Datei Zeile für Zeile.
InformationsquelleAutor Omar Ashraf