这可能是一个令人尴尬的问题,因为答案无疑是显而易见的。
我已经使用Visual Studio很多年了,但这是我第一次做任何“控制台应用程序”开发。
当我运行我的应用程序时,控制台窗口弹出,程序输出出现,然后当应用程序退出时窗口关闭。
是否有一种方法可以让它一直打开直到我检查输出,或者在窗口关闭后查看结果?
这可能是一个令人尴尬的问题,因为答案无疑是显而易见的。
我已经使用Visual Studio很多年了,但这是我第一次做任何“控制台应用程序”开发。
当我运行我的应用程序时,控制台窗口弹出,程序输出出现,然后当应用程序退出时窗口关闭。
是否有一种方法可以让它一直打开直到我检查输出,或者在窗口关闭后查看结果?
当前回答
这里有一个解决方案:(1)不需要任何代码更改或断点,(2)在程序终止后暂停,以便您可以看到打印的所有内容。它会在F5或Ctrl+F5后暂停。主要的缺点是在VS2013 Express上(根据测试),它不加载符号,所以调试非常受限。
创建批处理文件。我调用我的runthenpause.bat,有以下内容: %1 %2 %3 %4 %5 %6 %7 %8 9 暂停 第一行将运行您提供的任何命令和最多8个参数。第二行将…暂停。 打开项目属性|配置属性|调试。 将“命令参数”更改为$(TargetPath)(或“命令”中的任何内容)。 将“Command”更改为runthenpause.bat的完整路径。 点击确定。
现在,当您运行时,runthenpause.bat将启动您的应用程序,在应用程序终止后,将暂停以便您查看控制台输出。
我将张贴更新,如果我弄清楚如何获得的符号加载。我尝试了/Z7,但没有成功。
其他回答
在程序末尾使用Console.ReadLine()。这将保持窗口打开,直到您按下Enter键。详情见https://learn.microsoft.com/en-us/dotnet/api/system.console.readline。
一个更好的解决方案:
atexit([] { system("PAUSE"); });
在程序开始的时候。
优点:
可以使用std::exit() 可以从主有多个返回 您可以在调试器下运行程序 IDE独立(+ OS独立,如果你使用cin.sync();cin.ignore ();Trick而不是system("pause");)
缺点:
必须修改代码 不会暂停std::terminate() 仍然会发生在IDE/调试器会话之外的程序中;你可以在Windows下使用:
extern "C" int __stdcall IsDebuggerPresent(void);
int main(int argc, char** argv) {
if (IsDebuggerPresent())
atexit([] {system("PAUSE"); });
...
}
如果您使用的是. net,请将Console.ReadLine()放在程序结束之前。
它将等待<ENTER>。
在项目属性的调试部分的命令参数框中添加“| pause”。
Visual Studio 2015,带有导入。因为我讨厌 当代码示例没有给出所需的导入时。
#include <iostream>;
int main()
{
getchar();
return 0;
}