Anfängerproblem: Fenster schliesst vor Ausgabe
-
Ja, tut sie, habe den Code genau so kopiert und kompiliert und ausgeführt, keine Veränderung.
Nach der Eingabe der 2. Zahl und dem Klick auf Enter ist Schluss.
-
Hat nicht jemand noch eine Idee?
Kann kein einziges Programm zu Ende machen, wenn ich am Ende keine Ausgabe hinkriege, bin echt verzweifelt.
-
Also warum sich dein Programm auch mit
cin.clear(); cin.ignore(cin.rdbuf()->in_avail()); cin.get();
schließt, weiß ich nicht.
Aber du kannst dein Programm auch über die Konsole aufrufen. Unter Windows Start->Ausführen->CMD und dann den Pfad zum Programm+Programm Name. Dann schließt sich dein Programm nicht.Oder wenn gar nix mehr hilft, dann versuch mal system("Pause");
#include<iostream> using namespace std; int main() { int zahl1; int zahl2; cout<<"Bitte eine Zahl eingeben\n"; cin>>zahl1; cout<<"Bitte noch eine Zahl eingeben\n"; cin>>zahl2; cout<<"Zahl 2: "<<zahl2<<endl; cout<<"Zahl 1: "<<zahl1<<endl; system("Pause"); return 0; }
-
Hallo,
schreib am Ende deines Codes einfach:
getch ();
Dazu musst du die <conio.h> inkludieren.
#include<iostream> #include <conio.h> using namespace std; int main() { int zahl1; int zahl2; cout<<"Bitte eine Zahl eingeben\n"; cin>>zahl1; cout<<"Bitte noch eine Zahl eingeben\n"; cin>>zahl2; cout<<"Zahl 2: "<<zahl2<<endl; cout<<"Zahl 1: "<<zahl1<<endl; getch (); }
-
Hmm, es könnte auch sein, daß in_avial() nicht das richtige Ergebnis liefert - versuch's mal mit:
cin.clear() cin.ignore(numeric_limits<streamsize>::max()); cin.get();
(und gib mal testweise aus, was für einen Wert cin.rdbuf()->in_avial() überhaupt zurückgibt)
-
Moin,
Also dein Problem ist mir gut bekannt. Jedoch habe ich von deinen möglichkeiten
das schließen des Fenster zu verhindern noch nichts gehört.
Wenn du getch(); Anfügst liest du das nächste Zeichen aus, das der Anwender eingibt. Du solltest cin.ignore(); eingeben (vor dem Aufruf von Return 0).Gib cin.ignore() ohne Par5ameter ein - das ist der eleganteste weg!
Viel Spaß
Jonson
-
ich glaube du kannst es auch mit system("PAUSE"); vor return 0; verhindern ...
z.B.:
#include <iostream> using namespace std; int main() { //blabla system("PAUSE"); return 0; }
Hoffe das hilft
PS: arbeitest du mit devcpp ?
mfg. kEi
*edit* ups, da hab ich wohl was überlesen, steht ja schon weiter oben ... sorry
-
also ich würde getchar() und/oder fflush(stdin) nehmen..bö
lg
-
CStoll schrieb:
Hmm, es könnte auch sein, daß in_avial() nicht das richtige Ergebnis liefert - versuch's mal mit:
cin.clear() cin.ignore(numeric_limits<streamsize>::max()); cin.get();
(und gib mal testweise aus, was für einen Wert cin.rdbuf()->in_avial() überhaupt zurückgibt)
ich glaube es bringt einem anfänger garnichts etwas zu kopieren wenn er es nicht versteht, sry CStoll ist halt nur eine kritik die irgendwie alle machen, wieso nicht einfach:
getchar(); // wartet auf eine eingabe
-
Stelfer schrieb:
ich glaube es bringt einem anfänger garnichts etwas zu kopieren wenn er es nicht versteht, sry CStoll ist halt nur eine kritik die irgendwie alle machen, wieso nicht einfach:
Und ihn mit Nicht-Standard-Funktionen zu bombardieren ist deiner Meinung nach besser?
-
warum ist es den kein standard ?
ist doch einfach eine eingabe ohne übergabe,
wenn es keiner ist dann nehme ich die kritik gerne zurück und entschuldige mich bei dir
-
OK, getchar() ist Standard - Ansi C Standard. In C++ nimmt man anstelle davon cin.get().
(nicht standardisiert sind einige der anderen Methoden, die hier genannt wurden - z.B. fflush(stdin) oder system("pause"))
-
aso ich dachte du meintest getchar() als nicht stadardisiert ...,
da geb ich dir recht liebercin.clear()
cin.ignore(numeric_limits<streamsize>::max());
cin.get();benutzen als das system ...