C++ Programm soll sich nicht sofort schließen!
-
Hallo ich bin sehr sehr neu wirklich sehr sehr neu in der C+ programmierung und habe mal eine Frage.
Ihr kennt bestimmt alle das Programm Hello World oder ??
Und wenn ich den Code geschrieben habe und daraus eine .exe gemacht habe und es ausfürhe schließt sich das programm sofort ws muss ich für ein code eingeben das es offen bleibt? das ist der code:
[#include <iostream>
int main()
{
cout << "hello World!\n;
return 0;
}]
Und irgendwas fehlt doch da oder??
-
Da das ein Konsolenprogramm ist, solltest du es auch in einer Konsole starten.
Evtl. kannst du deine IDE so einstellen, dass das Fenster offen bleibt.
Bei Code::Blocks ist das z.B. schon so eingestellt.Das ist also kein Fehler von deinem Programm.
-
Windows macht das von dem Programm automatisch geöffnete Konsolenfenster nach Programmende einfach zu. Das ist im Großen und Ganzen auch gut so.
Wenn du eine Konsole aufmachst (Windows + R, cmd, Enter), dort mit
cdin das Programmverzeichnis wechselst und das Programm von dort startest, dann kannst du deine Ausgabe auf ewig bewundern und kein Fenster geht von selbst zu.Wenn du Visual C++ benutzt, kannst auch mal Strg+F5 versuchen; in der Regel kommt dann ein "Taste drücken..."-Prompt. War zumindest früher mal so.

-
ja aber esgibt doch irgendwas mit system pause oder so.
hier mal mein programm:#include<iostream>
int main(){
using namespace std;
cout << "Hello world!\n";
system ("PAUSE");
return 0;
}
und bei der zeile system pause ....
sagt er immer das es falsch ist
-
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.
-
...