Schon wieder Problem mit dem Fenster
-
Hallo!
Ich habe schon gestern ein Thread eröffnet, da mein Fenster sich geschlossen hat, bevor ich die Ausgabe lesen konnte. Da hat es dann auch geklappt, aber warum klappt es nicht bei diesem Programm?
CODE :
#include<iostream> #include<conio.h> #include<windows.h> #include<stdio.h> using namespace std; int main() { char b; cout << "Bitte einen Buchstaben eingeben: " ; cin >> b; cout << b << endl; cin.ignore(); }
Shon einmal Vielen Dank im Voraus!
EditBySide: Code-Tags eingefügt, in Zukunft selbst verwenden!
Wird gemacht, wusste nur nicht das es so etwas gibt
[ Dieser Beitrag wurde am 07.12.2002 um 16:05 Uhr von SideWinder editiert. ]
[ Dieser Beitrag wurde am 07.12.2002 um 19:07 Uhr von WingMan editiert. ]
-
Automatisches Schließen verhindern
schau doch einfach mal in die FAQ
BTW.
ist das Problem hier OT und gehört in das Konsolen Forum
-
Konsolen-FAQ "Automatisches Schließen verhindern".
MfG SideWinder
-
Habe ich ja schon alles gemacht bevor ich hier gepostet habe. Da stand man soll ans Ende "cin.ignore(); " schreiben (siehe auch meinen Quelltext). Aber das Fenster schliesst sich bei diesem Programm trotzdem. Wenn ich nur int verwende, dann klappt es, aber so?
THX
WingMan
-
Nein, nicht nur cin.ignore(), schau genau - alle 3 Zeilen musst du einfügen!
MfG SideWinder
-
cin.sync();
cin.get();cu
-
Nö, schau lieber mal in die FAQ - dachte auch vorher an cin.sync(), aber Hume hat mich eines besseren belehrt!
MfG SideWinder
-
Scheisse ich bin echt zu doof, könte bitte einer so freundlich sein und mir den Code so umändern das sich dieses blöde Fenster nicht mehr schliesst? BITTE !
Bin am verzweifeln, möchte gerne C++ lernen, aber wie, wenn ich nie sehen kann, ob es auch wirklich funktioniert?
Hier noch einmal der Code, habe auch die Zeilen aus der FAQ eingefügt, klappt trotzdem nicht, warum?
#include<iostream> using namespace std; int main() { char b; cout << "Bitte einen Buchstaben eingeben: " ; cin >> b; cout << b << endl; std::cin.clear (); std::cin.ignore ( std::cin.rdbuf () -> in_avail () ); std::cin.get (); }
Schonjetzt einmal Danke für Eure Hilfe und Eure geduld mit mir blutigem Anfänger
Gruß
WingMan
-
So jetzt bin ich der Dumme...habe keine Ahnung warum es bei dir nicht funktioniert...
Sollten alle Stricke reißen, versuch einmal folgendes anstatt der 3 Zeilen:
#include <conio.h> // oben einfügen #include <windows.h> // oben einfügen ... FlushConsoleInputBuffer ( GetStdHandle ( STD_INPUT_HANDLE ) ); getch ();
Hoffentlich schaut ein C++-Profi rein, aber bei mir funktioniert dein Quelltext (hab jetzt nicht explizit deinen ausprobiert, aber hab diesen schon öfters benützt).
MfG SideWinder
-
also ich habe genau den code von Wingman eingesetzt und er hat am schluss schön gewartet bis man enter drückt.
-
Hmm, eigentlich sollte das funktionieren. Ich hab noch ne andere Variante zu bieten, die aber in diesem Fall eigentlich das gleiche tut wie dein letzter Code! Aber probiers einfach mal:
#include<iostream> using namespace std; int main() { char b; cout << "Bitte einen Buchstaben eingeben: " ; cin >> b; cout << b << endl; cin.clear(); cin.seekg(0L, ios::end); // geht ans Ende des Datenstroms cin.get(); return 0; }
Btw... main() sollte eigentlich immer nen Rückgabewert haben. Und wenn du die Using-Klausel einsetzt (using namespace std; in deinem Fall) ist es unnötig den Namensraum bei Aufrufen nochmal explizit anzugeben (cin.get() anstatt std::cin.get() ).
-
Das std:: kommt bei ihm aus der FAQ, wo ich nicht sicher sein kann, dass jeder ein "using namespace std;" oben hinsetzt ;-).
MfG SideWinder
-
auf die gefahr das ich mich lächerlich mache, ABER einfach "getch();" am ende dürfts doch auch tun oder? wenn nich, warum?
grüsse.
-
ok, ok, ich hab jetzt gelesen und nehme obigen beitrag zurück.....
(hab jetzt auch die faq gelesen..)
-
Hehe, Erleuchtung :).
MfG SideWinder