Konsolenfenster in Visual C++ offen halten?

Party4Life

Bekanntes Gesicht
Mitglied seit
19.07.2001
Beiträge
415
Reaktionspunkte
0
Hallo,

meine Frage: welchen Befehl benötige ich, um das Konsolenfenster offen zu halten und das automatische Schließen zu verhindern?

Eingebunden habe ich bisher:

#include <iostream.h>
#include <conio.h>
#include <stdio.h>

Gruß
Party
 
T

Thomsn

Guest
Nimm einfach ne Datenabfrage, die auf Eingabe wartet.
Oder sowas wie getch()...

Die Headerdateien sehen übrigens etwas komisch aus. stdio.h ist ne C-typische Datei. iostream.h ist eine veraltete Version der eigentlichen C++-Datei iostream, die heute eigentlich nicht mehr genutzt wird. Wenn ich mich jetzt nicht irre...
 
TE
P

Party4Life

Bekanntes Gesicht
Mitglied seit
19.07.2001
Beiträge
415
Reaktionspunkte
0
Thomsn am 26.05.2007 23:22 schrieb:
Nimm einfach ne Datenabfrage, die auf Eingabe wartet.
Oder sowas wie getch()...

Die Headerdateien sehen übrigens etwas komisch aus. stdio.h ist ne C-typische Datei. iostream.h ist eine veraltete Version der eigentlichen C++-Datei iostream, die heute eigentlich nicht mehr genutzt wird. Wenn ich mich jetzt nicht irre...

Wo muss ich getch() denn platzieren?
Ich hab wirklich einen billigen Code (bin am Anfang eines C++-Buches):

#include <iostream.h>
#include <conio.h>
#include <stdio.h>

int main()
{
cout << "Hello World\n";

return 0;
}

Wo muss das getch() nun hin? Hinter "return 0"?

Ich hab statt iostream.h mal nur iostream geschrieben, bekomme dann aber eine Fehlermeldung.
Bei Visual c++ Express funktioniert das aber, soweit ich weiß.
 
T

Thomsn

Guest
Party4Life am 26.05.2007 23:36 schrieb:
Wo muss das getch() nun hin? Hinter "return 0"?
Nein, davor, aber wieso probierst Du es nicht einfach aus? *g* Du kannst ja nix kaputt machen oder so. :)

EDIT: Irgendwie fehl in Deinem Sourcecode übrigens noch das mit dem Namensraum.
Du müsstest entweder vor das cout noch ein std:: (also std::cout) schreiben, oder vor der Main-Funktion ein using std::cout oder ein using namespace std;.
 
TE
P

Party4Life

Bekanntes Gesicht
Mitglied seit
19.07.2001
Beiträge
415
Reaktionspunkte
0
Thomsn am 26.05.2007 23:42 schrieb:
Party4Life am 26.05.2007 23:36 schrieb:
Wo muss das getch() nun hin? Hinter "return 0"?
Nein, davor, aber wieso probierst Du es nicht einfach aus? *g* Du kannst ja nix kaputt machen oder so. :)

Ich habs nun vor "return 0" platziert. Das Fenster ist offen, wenn ich das Programm vom Quellcode heraus aufrufe.
Aber wie kann ich das Fenster offen halte, wenn ich es vom Verzeichnis her öffne? Da funktioniert es leider noch nicht.

Bsp.: ich schreibe eine Konsolenanwendung, die wie ein Taschenrechner Zahlen berechnen soll.
Wenn ich das Programm nun weitergeben würde, dann muss die Konsolenanwendung ja offen bleiben.
Wie bekomme ich das hin?
 
T

Thomsn

Guest
Ersetze mal das getch() durch cin.getch().

EDIT: Stell aber sicher, dass Du das mit dem Namespace geregelt hast. cin gehört auch zu std.

(also entweder 'using namespace std', 'using std::cin;' oder 'std::cin...')
 
TE
P

Party4Life

Bekanntes Gesicht
Mitglied seit
19.07.2001
Beiträge
415
Reaktionspunkte
0
Thomsn am 26.05.2007 23:57 schrieb:
Ersetze mal das getch() durch cin.getch().

EDIT: Stell aber sicher, dass Du das mit dem Namespace geregelt hast. cin gehört auch zu std.

(also entweder 'using namespace std', 'using std::cin;' oder 'std::cin...')

Mein Code sieht mittlerweile wie folgt aus:

#include <iostream.h>
#include <conio.h>
#include <stdio.h>

using namespace std;
using std::cin;

int main()
{

cout << "Hello World\n";


return 0;
cin.getch();
}

Nur leider bekomme ich jetzt 4 Fehlermeldungen; eine besagt z. B., dass "std" nicht existiert oder gar kein Namespace ist.
Was tun?
 

Zeitkind

Benutzer
Mitglied seit
02.01.2003
Beiträge
36
Reaktionspunkte
0
Party4Life am 27.05.2007 02:05 schrieb:
Mein Code sieht mittlerweile wie folgt aus:

#include <iostream.h>
#include <conio.h>
#include <stdio.h>

using namespace std;
using std::cin;

int main()
{
cout << "Hello World\n";
return 0;
cin.getch();
}

Die Funktion getch() gehört vor return 0. Alles was nach dem return steht, wird in diesem Fall nicht mehr bearbeitet. Das dein Fenster noch offen ist, wenn du es ausm Visual Studio startest ist normal.. da wartet die Konsole immer noch auf nen Tastendruck, bevor sie sich verabschiedet.

Party4Life am 27.05.2007 02:05 schrieb:
Nur leider bekomme ich jetzt 4 Fehlermeldungen; eine besagt z. B., dass "std" nicht existiert oder gar kein Namespace ist.
Was tun?

Hm, also std ist eigentlich ein prima namespace. Das dein VC++ da nichts findet, kann eigentlich nur an einem der folgenden Punkte liegen (sofern ich da nix vergessen habe):

- Du benutzt die Visual Studio C++ 6.0 Version. Hier gabs das ganze Namespace Gedöns meines Wissens noch nicht so ausgeprägt, bzw. wurde für funktionierenden Code vorausgesetzt.. deswegen wirst du hier mit dem Namespace kein Glück haben. (Vielleicht hast du den Beispiel Code auch einfach nur aus einem alten Buch (wegen iostream.h)

- Du benutzt NICHT die oben genannte Version. Dann solltest du aber kein #import <iostream.h> machen, sondern diese Zeile in #import <iostream> umändern. Sonst findet er den entsprechenden Header nicht.

Hmm, eigentlich glaub ich, dass mir gerade eben noch ein Grund im Kopf herumgeisterte, aber irgendwie hab ich den mittlerweile schon wieder vergessen *arg. Ändere dein Programm mal wie folgt:

#include <iostream>
#include <conio.h>

using namespace std;
using std::cin;

int main() {
cout << "Hello World\n";
getch();
return 0;
}

Damit sollte es zumindest bei den neueren VS Compilern ohne murren compilieren (habs selbst gerade getestet). Zur Not haust du hier einfach mal alle deine Fehlermeldungen rein.. sonst kann man nur raten warum bei dir was nicht funktioniert :D
 
T

Thomsn

Guest
Zeitkind am 27.05.2007 07:52 schrieb:
Ändere dein Programm mal wie folgt:

#include <iostream>
#include <conio.h>

using namespace std;
using std::cin;

int main() {
cout << "Hello World\n";
getch();
return 0;
}
Hm, ich hätte eher gesagt:
Code:
#include <iostream>

using namespace std;

int main() {
   cout << "Hello, World\n";
   cin.getch();
   return 0;
}
Der Rest wäre doch überflüssig. Vor allem das 'using std::cin;' nachdem man eh schon 'using namespace std;' verwendet hat.

@Threadstarter: Wenn Dein Compiler damit Probleme macht, kann ich Dir nur raten, einen anderen zu verwenden. Ich weiß nicht, inwieweit die Visual-C++ Programme von Microsoft sich da vom normalen C++-Standard unterscheiden, aber wenn Du C++ lernen willst, ist das vielleicht nicht so ideal.

Schau Dir eventuell mal den GCC oder Dev-C++ (bzw. seinen dort erwähnten Nachfolger) an. Damit solltest Du wirklich standardkonform C++ programmieren können.
 
TE
P

Party4Life

Bekanntes Gesicht
Mitglied seit
19.07.2001
Beiträge
415
Reaktionspunkte
0
Zeitkind am 27.05.2007 07:52 schrieb:
Die Funktion getch() gehört vor return 0. Alles was nach dem return steht, wird in diesem Fall nicht mehr bearbeitet. Das dein Fenster noch offen ist, wenn du es ausm Visual Studio startest ist normal.. da wartet die Konsole immer noch auf nen Tastendruck, bevor sie sich verabschiedet.

Party4Life am 27.05.2007 02:05 schrieb:
Nur leider bekomme ich jetzt 4 Fehlermeldungen; eine besagt z. B., dass "std" nicht existiert oder gar kein Namespace ist.
Was tun?

Hm, also std ist eigentlich ein prima namespace. Das dein VC++ da nichts findet, kann eigentlich nur an einem der folgenden Punkte liegen (sofern ich da nix vergessen habe):

- Du benutzt die Visual Studio C++ 6.0 Version. Hier gabs das ganze Namespace Gedöns meines Wissens noch nicht so ausgeprägt, bzw. wurde für funktionierenden Code vorausgesetzt.. deswegen wirst du hier mit dem Namespace kein Glück haben. (Vielleicht hast du den Beispiel Code auch einfach nur aus einem alten Buch (wegen iostream.h)

- Du benutzt NICHT die oben genannte Version. Dann solltest du aber kein #import <iostream.h> machen, sondern diese Zeile in #import <iostream> umändern. Sonst findet er den entsprechenden Header nicht.

Hmm, eigentlich glaub ich, dass mir gerade eben noch ein Grund im Kopf herumgeisterte, aber irgendwie hab ich den mittlerweile schon wieder vergessen *arg. Ändere dein Programm mal wie folgt:

#include <iostream>
#include <conio.h>

using namespace std;
using std::cin;

int main() {
cout << "Hello World\n";
getch();
return 0;
}

Damit sollte es zumindest bei den neueren VS Compilern ohne murren compilieren (habs selbst gerade getestet). Zur Not haust du hier einfach mal alle deine Fehlermeldungen rein.. sonst kann man nur raten warum bei dir was nicht funktioniert :D

Mit dem Code von Zeitkind hat es funktioniert.
Ich benutze aber Visual C++ 6.
Das C++-Buch ist schon ziemlich alt (C++ in 21 Tagen -> wers glaubt ;))

@Thomsn: ist es empfehlenswerter, nicht mit Visual C++ 6 mit der C++-Programmierung anzufangen?
Ich werde mir Dev-C++ mal anschauen.

Edit: Hab mir Dev-C++ runtergeladen, schaut ganz gut aus.
 
T

Thomsn

Guest
Party4Life am 27.05.2007 17:42 schrieb:
@Thomsn: ist es empfehlenswerter, nicht mit Visual C++ 6 mit der C++-Programmierung anzufangen?
Ich werde mir Dev-C++ mal anschauen.
Das will ich mal nicht behaupten, weil ich das Programm nicht wirklich kenne. Aber wenn es so ist, wie Du sagst, und es Probleme mit "normalem" C++-Code macht, würd ich schon lieber etwas anderes nehmen oder mich erkundigen, woran das genau liegt.
 

mcShredder

Neuer Benutzer
Mitglied seit
22.10.2008
Beiträge
6
Reaktionspunkte
0
Du kannst auch einfach system("PAUSE") benutzen!!

mit system("BEFEHL") kannst du alle Konsolenbefehle benutzen z.b. auch MKDIR.

Funktioniert auf jeden fall unter WIndows. Bei anderen Betriebssystemen weiß ich es nicht.
 
Oben Unten