Eingabepuffer
-
Mit welchem Befehl kann ich auslesen was derzeitig im Eingabepuffer steht?
MfG
Stromberg
-
Hmm WELCHEN Eingabebuffer?
std::cout << std::cin.rdbuf() << std::endl;
-
Ah ja sowas hab ich gemeint, nur:
Bei folgendem Beispiel:#include <iostream> using namespace std; const int SIZE=20; int main() { char a[SIZE]; cin.getline(a,SIZE); cout << cin.rdbuf() << endl; return 0; }Sollte doch wenn ich bei "cin.getline(a,SIZE)" "uschi" eingebe, dann bei "cout << cin.rdbuf() << endl; "uschi" ausgegeben werden, aber des is ganz komisch, da wird dann irgendwie wieder "cin" aufgerufen....und das geht unendlich soweiter, und manchmal gibt es dann das eingegeben aus und nicht.....es funktioniert zumindestens nicht so wie ich will. Ich will einfach das dann "uschi" (inhalt vom cin-Puffer) ausgegeben wird, und dann Programm zu ende. Fertig.
Wie geht das? Was is falsch an meinem Programm?!MfG
StombergPS: Was bedeutet "rdbuf()" eigentlich auf Englisch, is doch sicher eine abkürzung für irgendwas?
-
Hmm nö mit getline ließt du doch die Zeile in a ein ... da kann nix im Buffer mehr stehen ^^
-
Ja gut, wenn ich aber über die Max. Zeichenanzahl hinausschreibe, also z.B. "UschiUschiUschiUschiUschi" (25 Zeichen) dann müsste ja noch "iUschi" im Buffer stehen oder? Aber Warum wird das Programm nach dem "cout << cin.rdbuf() << endl;" nicht sofort beendet, sondern es wird immer wieder nochmal eine Eingabe aufgerufen?!!!
MfG
Stromberg
-
getch()
-
Wie "getch()"?
-
hmm mach mal folgendes:
#include <iostream> #include <string> int main() { std::string input; std::cin >> input; std::cout << "Eingelesen: " << input << " Bytes waiting: " << std::cin.rdbuf() << std::endl; }gib jetzt mal "Uschi hat eine Muschi an ihrem Fahrrad" ein.
-
Gut da funktionierts, aber warum gehts dann nicht mit cin.getline(a,SIZE)??
MfG
Stromberg
-
Hmm guck dir mal an was getline macht ...
-
Ja getline schreibt, alles bis "enter" in den Puffer bzw. drittes Argument, und schreibt anschließend "n-1" (letztes feld für nullstelle) Zeichen in den c-string. Wenn die eingegebenen Zeichen > max. Zeichen sind, dann bleiben die restlichen aber doch halt im buffer stehen oder? Und diese wollt ich auslesen?!
MfG
Stromberg