C++ exe Datei Problem?
Ich habe 2 Probleme mit 2 meiner kürzlich programmierten exe Datei:
- Das erste Programm, welches ein sehr einfaches "Console Line Window" Programm ist, schließt sich direkt nach der erwünschten Eingabe trotz dem dass ich am Ende meines Codes noch stehen habe, dass ich manuell Enter drücken muss damit sich das Programm schließt - das Programm schließt sich aber schon bei der Eingabe von "Hello" aber warum?
#include <iostream>
#include <string>
using namespace std;
int main() {
string input;
cout << "Say Hello: ";
getline(cin, input);
if (input.find("Hello") != string::npos)
cout << "Hello there!" << endl;
cout << "Press any key to exit...";
cin.ignore();
cin.get();
return 0;
}
- Beim zweiten Programm habe ich das Problem, dass es sich gar nicht erst öffnet also ich mache doppel Klick auf die kompillierte exe Datei aber sie blitzt nur kurz auf und schließt sich sofort wieder, ich sehe das Fenster nicht mal für 1 Sekunde aber woran liegt das?
2 Antworten
Versuche das cin.ignore mal durch
cin.ignore(numeric_limits::max(), '\n')
Zu ersetzen, möglicherweise steht nach dem ignore ohne Parameter noch ein Whitespace im Eingabepuffer.
Habe ich gerade mal probiert aber funktioniert leider auch nicht.
schreibe am ende des Programms vor dem return
system('pause');
das sorgt dafür das das Programm dort anhält und die Konsole offen bleibt.
Ich habe den Code von der Frage mal selber ausgeführt (ohne Änderungen) und alles funktioniert. Die Konsole bleibt sowohl wenn man etwas anderes als "Hello" als auch wenn man "Hello" eingibt offen bis man was drückt. Vielleicht ist der Fehler nicht im Code selber sondern in der IDE ist etwas falsch eingestellt.
Wenn du mit 'solcher Code Lines' sowas meinst wie cin.ignore();, cin.get(); oder system('pause'); wäre die einzige Möglichkeit die mir dazu einfällt das die Zeilen nicht kompiliert wurden (Auswelchem Grund auch immer). Aber probiermal in der IDE die du nutzt eine Leere Konsolen App zu erstellen und den Code dort mal auszuführen
code in einer Funktion oder Methode wird immer von oben nach unten ausgeführt. Dort wo diese code Zeilen platzierst hält das Programm an und wartet auf eine Eingabe. Also eher unten, aber nicht unter return; denn dort wird die Funktion / Methode abgebrochen.
In VS Code muss man ja alles Manuel mit dem Kompiler machen, daher ist es auch etwas Fehler anfälliger. Probiermal Visual Studio aus dort kann man den Code den man geschrieben hat auf Knopf druck Kompilieren und Starten lassen und hat Projekt vorlagen und viele weitere tools.
system('pause');
Das ist nur einer von vielen Code Lines die ich schon probiert habe aber sich das Fenster immer noch direkt nach der Eingabe schließt.