我开始在Visual c++和我想知道如何保持控制台窗口。

例如,这将是一个典型的“hello world”应用程序:

int _tmain(int argc, _TCHAR* argv[])
{
    cout << "Hello World";
    return 0;
}

我漏了哪一行?


当前回答

下面是一种不修改任何代码而保持命令窗口打开的方法:

在Visual Studio中,打开项目属性页-> Debugging。

命令:输入$(ComSpec)

命令参数:输入/k $(TargetPath)。将任何参数附加到您自己的应用程序。

现在F5或Ctrl-F5在一个新窗口中执行Windows/System32/cmd.exe,并且/k确保在执行完成后命令提示符保持打开。

缺点是执行不会在断点处停止。

其他回答

正如一些人已经指出的那样,zoidberg的解决方案没有附加调试器,这是您通常不希望看到的。

在我看来,最好的选择是相应地配置你的VS(从VS 2017开始),通过到工具>选项>调试>通用。在这里,您取消选中“调试停止时自动关闭控制台”(在最底部),在您的情况下,可能选中了该选项。

下面是一种不修改任何代码而保持命令窗口打开的方法:

在Visual Studio中,打开项目属性页-> Debugging。

命令:输入$(ComSpec)

命令参数:输入/k $(TargetPath)。将任何参数附加到您自己的应用程序。

现在F5或Ctrl-F5在一个新窗口中执行Windows/System32/cmd.exe,并且/k确保在执行完成后命令提示符保持打开。

缺点是执行不会在断点处停止。

在返回行上放置断点。

你在调试器中运行它,对吧?

我也有同样的问题;在我的应用程序中有多个exit()点,没有办法知道它到底在哪里退出,然后我发现了这一点:

atexit(system("pause"));

or

atexit(cin.get());

这样,无论我们退出程序的哪个位置,它都会停止。

就在你的include之后 YW std:: cin.clear ();//重置任何错误标志 std:: cin.ignore (std:: numeric_limitsstd:: streamsize:: max (), ' \ n ');//忽略输入缓冲区中的任何字符,直到找到一个输入字符 std:: cin.get ();//从用户那里再获取一个字符