C++ Programm soll sich nicht sofort schließen!
-
Ja, das geht auch, ist aber kein Standard-C++ und funktioniert nur unter Windows. Dafür musst du vermutlich <cstdlib> inkludieren.
-
Hey danke dafür jetzt klappt jetzt alles hast mir richtig weiter geholfen.
Vielen Vielen Dank
-
Du kannst auch mal hier schauen: http://www.c-plusplus.net/forum/111042
Ist aus der FAQ von DOS und Win32-Konsole
-
re133 schrieb:
jetzt alles hast mir richtig weiter geholfen.
Nee, richtig weitergeholfen hat Dir DirkB:
DirkB schrieb:
Da das ein Konsolenprogramm ist, solltest du es auch in einer Konsole starten.
-
Wer seine ersten Schritte in C++ mit Konsolenprogrämmchen macht, will es möglichst bequem haben und denkt selbstverständlich nicht an Plattformunabhängigkeit o.ä..
system("pause")ist nun mal sehr bequem. In diesem Kontext finde ich nichts daran auszusetzen.Gegen STRG+F5 spricht leider, dass man so nicht debuggen kann.
-
_matze schrieb:
Wer seine ersten Schritte in C++ mit Konsolenprogrämmchen macht, will es möglichst bequem haben
Das will ich auch heute noch, und ich mach nicht meine ersten Schritte. Deshalb mach ich einmal ein Konsolenfenster auf, navigiere einmal ins Verzeichnis meiner exe-Datei, tippe einmal den Namen der exe-Datei ein, und in der Folge nur noch Pfeil nach unten/oben und Enter.
Ich finde das nicht unbequem.
-
_matze schrieb:
Gegen STRG+F5 spricht leider, dass man so nicht debuggen kann.
Den Debugger werfe ich nur an, wenn ein nichtoffensichtlicher Fehler rumliegt. Und das ist meistens nicht der Fall. Deshalb geht meistens STRG+F5 und beim Debugger-Lauf braucht man sinnigerweise kein Halten nach dem Ende, man stoppt ja zwischendurch an den interessanten Stellen.
-
Ja, einmal pro Session. Schließen der Konsole verhindern macht man wirklich nur einmal. Für kleine Testprogrämmchen finde ich das einfach besser. Aber gut, ist Ansichtssache.

-
volkard schrieb:
_matze schrieb:
Gegen STRG+F5 spricht leider, dass man so nicht debuggen kann.
Den Debugger werfe ich nur an, wenn ein nichtoffensichtlicher Fehler rumliegt. Und das ist meistens nicht der Fall. Deshalb geht meistens STRG+F5 und beim Debugger-Lauf braucht man sinnigerweise kein Halten nach dem Ende, man stoppt ja zwischendurch an den interessanten Stellen.
Ja, macht Sinn. Trotzdem finde ich ein system("pause") bei Hello World Programmen nicht grundsätzlich verwerflich.
-
_matze schrieb:
volkard schrieb:
_matze schrieb:
Gegen STRG+F5 spricht leider, dass man so nicht debuggen kann.
Den Debugger werfe ich nur an, wenn ein nichtoffensichtlicher Fehler rumliegt. Und das ist meistens nicht der Fall. Deshalb geht meistens STRG+F5 und beim Debugger-Lauf braucht man sinnigerweise kein Halten nach dem Ende, man stoppt ja zwischendurch an den interessanten Stellen.
Ja, macht Sinn. Trotzdem finde ich ein system("pause") bei Hello World Programmen nicht grundsätzlich verwerflich.
Ich schon. Will dann immer eine pause.bat schreiben mit "echo 127.0.0.1 www.c-plusplus.net >> C:\Windows\System32\Drivers\etc\hosts" drin.
Es ist von Anfang an unnötig. Und falls man mal was tolles geschrieben hat, wie ein Programm, das die Lottozahlen der nächsten Woche ermittelt, und das weitergibt, dann kann der arme volkard es nicht in automatischen Scripts benutzen, weil es immer auf eine Benutzereingabe wartet.
-
Oder einfach
std::cin.get()Das bewirkt das gleiche wie
system("pause"), ist aber Standard und startet keinen externen Prozess, was relativ teuer ist.
-
ich bins schrieb:
Oder einfach
std::cin.get()Das bewirkt das gleiche wie
system("pause"), ist aber Standard und startet keinen externen Prozess, was relativ teuer ist.Das klappt aber nicht, wenn noch was im Eingabepuffer steht. Daher ist das Forum ja auch voll von Varianten mit vorgeschaltetem Eingabepuffer leeren.
-
...
-
ich bins schrieb:
und startet keinen externen Prozess, was relativ teuer ist.
Und wie wir wissen, ist Performance immer da am relevantesten, wo das Programm auf den Benutzer wartet

Im Ernst: Der Versuch, sowas wie
system("pause")mit IO-Streams zu erreichen, artet in super-komplizierten Code aus und reagiert doch nur auf die Enter-Taste.
-
Sagen wir für Testläufe am Ende vom Programm (um halt das Schließen der Console zu verhindern) ist system("Pause") ganz gut, aber innerhalb vom Programm ist es nicht gut. Auch hier bestätigen Ausnahmen die Regel.
-
...
-
Nexus schrieb:
Im Ernst: Der Versuch, sowas wie
system("pause")mit IO-Streams zu erreichen, artet in super-komplizierten Code aus und reagiert doch nur auf die Enter-Taste.Geh doch mitte mal auf Swordfishs Link und schau, wie "superkompliziert" es wirklich ist.
Und?
-
Nexus schrieb:
ich bins schrieb:
und startet keinen externen Prozess, was relativ teuer ist.
Und wie wir wissen, ist Performance immer da am relevantesten, wo das Programm auf den Benutzer wartet

Im Ernst: Der Versuch, sowas wie
system("pause")mit IO-Streams zu erreichen, artet in super-komplizierten Code aus und reagiert doch nur auf die Enter-Taste.Ich dachte, auch ein PC könnte mehrere Sachen gleichzeitig erledigen. Ich habe mal was von Multitasking gehört. Wenn es das wirklich gäbe, dann sollte doch auch das Vordergrundprogramm nicht unnötig Ressourcen verschwenden.
Ganz abgesehen davon, dass ich mir angewöhnt habe, mit Ressourcen immer sparsam umzugehen. Aber wenn das nicht nötig ist und auch die Plattformunabhängigkeit auch so was von gestern ist, dann sollte ich mir das nochmal überlegen.
-
Der Link von Swordfish bestätigt mich nur. Es braucht einen ganzen Post, um die halbwegs äquivalente Funktionalität mit Standard-C++ zu erklären, und die verschiedenen Varianten verwirren nur. Für einen Anfänger sind die 3 Zeilen tatsächlich kompliziert, er muss sie entweder auswendig lernen oder ständig einen Header mitschleppen -- aber er wird den Code nicht verstehen, ohne gute Kenntnisse über IO-Streams zu haben. Und doch kann man nur auf Enter reagieren.
Wir reden hier nicht von Produktivcode, sondern von kleinen Testprogrammen, bei denen die Konsole offen bleiben soll. Unter Linux befinden sich die Leute tendenziell sowieso schon in der Konsole, da stellt sich das Problem weniger.
Trotzdem interessant, wie mein Post zu "Ressourcen und Plattformunabhängigkeit sind irrelevant" generalisiert wird

-
system("pause")funktioniert ganz einfach für Windows-Programmier-Anfänger. Es ist simpel und sofort verständlich.
Bei allem Verständnis für den Anspruch, immer sauber und portabel zu programmieren: Ist es wirklich sinnvoll, sich darüber zu mokieren, dass ein Newbie da nunsystembenutzt statt mit Streams rumzuhampeln, bei denen er weder verstehen kann, was das alles soll, noch irgendeinen Mehrwert davon hätte? Muss denn sein Hallo Welt! wirklich portabel sein, oder will er einfach bloß seine Ausgabe sehen?Edit: Ah, zwischendurch mal weggewesen. Wollte Nexus' Post nicht wiederholen.