答えが盲目的に明白であることは間違いないので、これはおそらく恥ずかしい質問です。
私は長年Visual Studioを使ってきましたが、これが私がコンソールアプリケーションの開発をしたのは今回が初めてです。
アプリケーションを実行すると、コンソールウィンドウがポップアップ表示され、プログラムの出力が表示された後、アプリケーションが終了するとウィンドウが閉じます。
出力を確認するまで開いたままにする方法と、ウィンドウを閉じた後に結果を表示する方法はありますか。
デバッグせずに実行すると(Ctrl + F5)、デフォルトではreturnキーを押してウィンドウを閉じるように促されます。デバッガを使いたい場合は、最後の行にブレークポイントを置くべきです。
プロジェクトを右クリック
プロパティ>設定プロパティ>リンカ>システム
SubSystem
オプションで Console(/ SUBSYSTEM:CONSOLE) を選択するか、テキストフィールドに Console と入力するだけです。
今それを試してください...それは動作するはずです
これがC/C++の方法です。
#include <stdlib.h>
#ifdef _WIN32
#define WINPAUSE system("pause")
#endif
これをあなたのプログラムの一番上に置き、それがWindowsシステム(#ifdef _WIN32
)上にある場合、それはWINPAUSE
と呼ばれるマクロを作成するでしょう。プログラムを一時停止させたいときはいつでもWINPAUSE;
を呼び出すとDOSコマンドを使ってプログラムを一時停止させます。 Unix/Linuxのような他のシステムでは、コンソールはプログラム終了でとにかく終了するべきではありません。
Goto Debug Menu - > Press StartWithoutDebugging
.NETを使用している場合は、プログラムの最後にConsole.ReadLine()
を付けます。
それは<ENTER>
を待ちます。
(/ SUBSYSTEM:CONSOLE)は、私のvs2013では動作しませんでした(私はすでに持っていました)。
「デバッグなしで実行」はオプションではありません。デバッグと出力の表示を切り替えたくないからです。
で終わった
int main() {
...
#if _DEBUG
LOG_INFO("end, press key to close");
getchar();
#endif // _DEBUG
return 0;
}
Qtcreator pre 2.6で使用されていたソリューション。今qtが成長している間、vsは別の方向に進んでいます。私が覚えているように、vs2008では我々はそのようなトリックを必要としませんでした。
getchar()
が戻る直前にmain()
を呼び出そうとします。
これは、(1)コードの変更やブレークポイントを必要とせず、(2)プログラムの終了後にを一時停止するので、表示されたeverythingを確認できます。 F5またはCtrl + F5の後で一時停止します。主な欠点は、VS2013 Express(テスト済み)ではシンボルがロードされないため、デバッグが非常に制限されていることです。
バッチファイルを作成します。私は私のrunthenpause.bat
を以下の内容で呼んだ。
%1 %2 %3 %4 %5 %6 %7 %8 %9
pause
最初の行はあなたが提供したどんなコマンドでも8つまでの引数を実行します。 2行目は...一時停止します。
プロジェクトのプロパティを開きます。構成プロパティデバッグ.
$(TargetPath)
(または "Command"にあるものは何でも)に変更します。runthenpause.bat
へのフルパスに変更します。これで、実行するとrunthenpause.bat
がアプリケーションを起動し、アプリケーションが終了した後にコンソール出力を見るのを一時停止します。
シンボルをロードする方法を見つけたらアップデートを投稿します。私は this ごとに/Z7
を試しましたが、成功しませんでした。
最後のコード行にしてください。
system("pause");
CNTRL + F5を押すだけで外部コマンドラインウィンドウで開くことができます(Visual Studioでは制御できません)。
これでうまくいかない場合は、コードの最後に次のコードを追加してください。
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
これは、コードが最後に到達したら、キーを押して端末ウィンドウを閉じるのを待ちます。
これを複数の場所で行いたい場合は、上記のコードをメソッド(例:private void Pause()
)に入れて、プログラムが可能な限り終了するたびにPause()
を呼び出します。
を追加プロジェクトプロパティのデバッグセクションの下のコマンド引数ボックスで「一時停止」をクリックします。
Visual Studio 2017(15.9.4)以降、オプションがあります。
Tools->Options->Debugging->Automatically close the console
Visual Studioのドキュメントからの対応するフラグメント :
デバッグが停止したときに自動的にコンソールを閉じる:
デバッグセッションの終了時にコンソールを閉じるようにVisual Studioに指示します。
あなたはコマンドプロンプトから実行ファイルを実行することができます。こうすればすべての出力を見ることができます。または、次のようにすることもできます。
int a = 0;
scanf("%d",&a);
return YOUR_MAIN_CODE;
こうすれば、a
変数にデータを入力するまでウィンドウは閉じません。
私の場合、VS 2017コミュニティ版でEmpty C++プロジェクトを作成したときにこれを経験しました。構成のプロパティで、サブシステムを "コンソール(/ SUBSYSTEM:CONSOLE)"に設定する必要があります。
やや良い解決策:
atexit([] { system("PAUSE"); });
あなたのプログラムの始めに。
長所:
cin.sync(); cin.ignore();
の代わりにsystem("pause");
のトリックを使用する場合は+ OSに依存しない)短所:
extern "C" int __stdcall IsDebuggerPresent(void);
int main(int argc, char** argv) {
if (IsDebuggerPresent())
atexit([] {system("PAUSE"); });
...
}
どちらでも使えます:
cin.get();
または
system("pause");
main()
関数の最後とreturn
ステートメントの前に必ずどちらかを作成してください。
このオプションも使えます
#include <conio.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
int main() {
.
.
.
getch();
return 0;
}