Wieder zwei unsinnige Funktionen!
-
Das Programm stürzt nicht ab.
Dann muss es doch am Compiler liegen, oder?
-
-
Hier das Programm zum Download (virenfrei):
-
Der Compiler ignoriert
peek()im ersten Code, weil der Zeilenumbruch bei der Extraktion von Skalaren nicht mit extrahiert wird.
getline()nimmt den Zeilenumbruch hingegen schon raus.Bekanntes Beispiel, warum man formatiertes und unformatiertes Lesen nicht vermischen sollte.
Das heißt: Im internen Buffer ist immer noch ein '\n' nicht gelesen worden. Daher blociet peek() nicht, sondern gibt '\n' zurück.
Kannst du mir jetzt erklären, wieso folgendes Programm (wie von dir erwartet) funktioniert:
#include <iostream> using namespace std; void in_int (int &x) { int *y = &x; cin >> *y; }; int main () { int x; in_int (x); cout << "\n\n\n" << x; // ignoriert den nächsten Befehl cin.ignore(); cin.peek (); };
-
Aha, es funktioniert, wegen dem getline. Das heißt, das eine mögliche Funktion für alle Pausen (ohne system ("pause")) wäre dann:
void pause () { cin.ignore (); cin.peek (); };Danke nochmal für eure Hilfe.
MfG
Seikuassi
-
Seikuassi schrieb:
Aha, es funktioniert, wegen dem getline. Das heißt, das eine mögliche Funktion für alle Pausen (ohne system ("pause")) wäre dann:
void pause () { cin.ignore (); cin.peek (); };Nein nicht wirklich. Schau mal im Archiv des (geschlossenen) Konsolenforums für bessere Lösungen. Die beste Lösung ist jedoch, Konsolenprogramme auch von einer Konsole aus zu benutzen.
-
Hallo,
Was hälst du von diesem Code?
cin.ignore(256,'\n'); cin.peek ();MfG
Seikuassi
-
Seikuassi schrieb:
Hallo,
Was hälst du von diesem Code?
cin.ignore(256,'\n'); cin.peek ();MfG
Seikuassi
Was hast du genau vor? :p
-
Ok, aber nicht optimal.
std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');wuerde sich besser machen.
EDIT aber am besten find ich immernoch:
SeppJ schrieb:
Die beste Lösung ist jedoch, Konsolenprogramme auch von einer Konsole aus zu benutzen.
-
Seikuassi schrieb:
Hallo,
Was hälst du von diesem Code?
cin.ignore(256,'\n'); cin.peek ();Was ist an 256 anders als an 1?