Dies ist wahrscheinlich eine peinliche Frage, da die Antwort zweifellos offensichtlich ist.
Ich habe Visual Studio jahrelang verwendet, aber dies ist das erste Mal, dass ich eine Konsolenanwendung entwickelt habe.
Wenn ich meine Anwendung ausführe, wird das Konsolenfenster geöffnet, die Programmausgabe wird angezeigt und das Fenster wird beim Beenden der Anwendung geschlossen.
Gibt es eine Möglichkeit, es entweder offen zu halten, bis ich die Ausgabe überprüft habe, oder die Ergebnisse anzuzeigen, nachdem das Fenster geschlossen wurde?
c
visual-studio
console
Martin
quelle
quelle
Antworten:
Wenn Sie ohne Debugging ausführen (Strg + F5), werden Sie standardmäßig aufgefordert, die Eingabetaste zu drücken, um das Fenster zu schließen. Wenn Sie den Debugger verwenden möchten, sollten Sie in der letzten Zeile einen Haltepunkt setzen.
quelle
ctrl+f5
funktioniert nicht, es gibt kein,Properties
wenn ich mit der rechten Maustaste auf das Projektwrench icon
klicke , auch das ist ausgegraut.Klicken Sie mit der rechten Maustaste auf Ihr Projekt
Wählen Sie Konsole (/ SUBSYSTEM: CONSOLE) in der
SubSystem
Option oder geben Sie einfach Konsole in das Textfeld ein!Jetzt probieren Sie es aus ... es sollte funktionieren
quelle
CTRL+F5
schlägt fehl, wenn Sie beispielsweise einem leeren Projekt eine neue C ++ - Datei hinzufügen.Hier ist ein Weg für C / C ++:
Fügen Sie dies oben in Ihr Programm ein. Wenn es sich auf einem Windows-System befindet (
#ifdef _WIN32
), wird ein Makro mit dem Namen erstelltWINPAUSE
. Wenn Sie möchten, dass Ihr Programm angehalten wird, rufen Sie es aufWINPAUSE;
und das Programm wird mit dem DOS-Befehl angehalten. Bei anderen Systemen wie Unix / Linux sollte die Konsole beim Beenden des Programms ohnehin nicht beendet werden.quelle
pause
Befehl ist Windows-spezifisch.Gehe zu Debug-Menü -> Drücke StartWithoutDebugging
quelle
Wenn Sie .NET verwenden, setzen Sie es
Console.ReadLine()
vor das Ende des Programms.Es wird warten
<ENTER>
.quelle
Console.ReadKey()
einfach auf einen Schlüssel warten.Ab Visual Studio 2017 (15.9.4) gibt es eine Option:
Das entsprechende Fragment aus der Visual Studio-Dokumentation :
quelle
Versuchen Sie,
getchar()
direkt vor dermain()
Rückkehr anzurufen .quelle
(/ SUBSYSTEM: CONSOLE) hat bei meinem vs2013 nicht funktioniert (ich hatte es bereits).
"Ausführen ohne Debuggen" ist keine Option, da ich nicht zwischen Debuggen und Anzeigen der Ausgabe wechseln möchte.
Ich endete mit
In qtcreator vor 2.6 verwendete Lösung. Jetzt, während qt wächst, geht vs in eine andere Richtung. Wie ich mich erinnere, brauchten wir im Jahr 2008 solche Tricks nicht.
quelle
Hier ist eine Lösung, bei der (1) keine Codeänderungen oder Haltepunkte erforderlich sind und (2) nach Beendigung des Programms angehalten wird, damit Sie alles sehen können , was gedruckt wurde. Es wird entweder nach F5 oder Strg + F5 angehalten. Der Hauptnachteil ist, dass in VS2013 Express (wie getestet) keine Symbole geladen werden, sodass das Debuggen sehr eingeschränkt ist.
Erstellen Sie eine Batchdatei. Ich habe meine angerufen
runthenpause.bat
, mit folgendem Inhalt:In der ersten Zeile wird der von Ihnen angegebene Befehl und bis zu acht Argumente ausgeführt. Die zweite Zeile wird ... angehalten.
Öffnen Sie die Projekteigenschaften | Konfigurationseigenschaften | Debuggen.
$(TargetPath)
(oder was auch immer in "Befehl" steht).runthenpause.bat
.Wenn Sie jetzt ausführen,
runthenpause.bat
wird Ihre Anwendung gestartet und nach Beendigung Ihrer Anwendung angehalten, damit Sie die Konsolenausgabe sehen können.Ich werde ein Update veröffentlichen, wenn ich herausfinde, wie die Symbole geladen werden. Ich habe versucht ,
/Z7
pro dies aber ohne Erfolg.quelle
Geben Sie einfach als letzte Codezeile ein:
quelle
Sie können Ihre ausführbare Datei an einer Eingabeaufforderung ausführen. Auf diese Weise konnten Sie die gesamte Ausgabe sehen. Oder Sie könnten so etwas tun:
Auf diese Weise wird das Fenster erst geschlossen, wenn Sie Daten für die
a
Variable eingeben .quelle
füge hinzu “| pause ”im Feld für Befehlsargumente im Abschnitt zum Debuggen in den Projekteigenschaften.
quelle
pause
scheint nur in Batch-Dateien zu funktionieren, und während es Eingaben von Ihrem Programm auf STDIN empfängt, wird dieser Text nicht erneut gedruckt. Ich habe versucht , Ersatz|
mit&&
, aber es hatte keine Wirkung - vermutlich , weil es nicht mit einem Kommando - Shell (cmd.exe) ausgeführt wird .Drücken Sie einfach CNTRL + F5, um es in einem externen Befehlszeilenfenster zu öffnen (Visual Studio hat keine Kontrolle darüber).
Wenn dies nicht funktioniert, fügen Sie am Ende Ihres Codes Folgendes hinzu:
Warten Sie, bis Sie eine Taste drücken, um das Terminalfenster zu schließen, sobald der Code das Ende erreicht hat.
Wenn Sie dies an mehreren Stellen tun möchten, fügen Sie den obigen Code in eine Methode ein (z. B.
private void Pause()
) und rufen Sie auf,Pause()
wann immer ein Programm ein mögliches Ende erreicht.quelle
Eine etwas bessere Lösung:
zu Beginn Ihres Programms.
Vorteile:
cin.sync(); cin.ignore();
Trick anstelle von verwendensystem("pause");
)Nachteile:
quelle
Verwenden Sie entweder:
cin.get();
oder
system("pause");
Stellen Sie sicher, dass Sie eine davon am Ende der
main()
Funktion und vor derreturn
Anweisung erstellen.quelle
Sie können diese Option auch verwenden
quelle
In meinem Fall habe ich dies erlebt, als ich ein leeres C ++ - Projekt für die VS 2017 Community Edition erstellt habe. Sie müssen das Subsystem unter Konfigurationseigenschaften auf "Konsole (/ SUBSYSTEM: CONSOLE)" einstellen.
quelle
Visual Studio 2015 mit Importen . Weil ich es hasse, wenn Codebeispiele nicht die erforderlichen Importe liefern.
quelle
Verwenden Sie
Console.ReadLine()
am Ende des Programms. Dadurch bleibt das Fenster geöffnet, bis Sie die EnterTaste drücken. Weitere Informationen finden Sie unter https://docs.microsoft.com/en-us/dotnet/api/system.console.readline .quelle