C++ 控制台应用程序窗口过早退出,但不是立即退出(VS 2017)

Posted

技术标签:

【中文标题】C++ 控制台应用程序窗口过早退出,但不是立即退出(VS 2017)【英文标题】:C++ console application window exiting too early, but not immediately (VS 2017) 【发布时间】:2017-09-20 03:52:37 【问题描述】:

我决定制作一个沙盒应用程序,它可以帮助我更多地练习矢量,并且程序的关键输出仅在眨眼间显示。窗口本身并没有立即退出,因为我看到其他人正在处理这个问题。我的程序计算 n 个向量 int 值的平均值,然后将其显示出来。

#include <iostream>
#include <vector>
using namespace std;

double avgVector(vector<int>);

int main()

vector<int> values;
int numValues;
double average;

cout << "How many values do you wish to average? ";
cin >> numValues;

for (int count = 0; count < numValues; count++)

    int tempValue;

    cout << "Enter an integer value: ";
    cin >> tempValue;
    values.push_back(tempValue);

average = avgVector(values);
cout << "Average: " << average << endl;
return 0;


double avgVector(vector<int> vect)

int total = 0;
double avg = 0.0;

if (vect.empty())
    cout << "No values to average.\n";
else

    for (int count = 0; count < vect.size(); count++)
        total += vect[count];
    avg = static_cast<double>(total) / vect.size();

return avg;


消息“Average:”+平均值一眨眼就显示出来了,我尝试过包含std::cin.get()和std::getChar()等字符捕获函数

【问题讨论】:

如果您选择 run(Ctrl+F5) 而不是 Debug(F5) 控制台应该保持打开状态,直到您手动关闭它。如果要调试 - 在 main() 的最后一行添加断点 (F9) 由于在您的示例中没有任何东西可以阻止程序退出,因此很难知道您的任何尝试是否正确,或者如果不正确,如何纠正它们。通常,您希望在再等待 1 个字符之前忽略输入缓冲区中的任何剩余数据。 FWIW 我要么在最后一行放一个断点,要么在调试器之外运行它,以更合适的为准。 @ArtemyVysotsky 我尝试通过 Ctrl+F5 运行程序,但不幸的是,同样的情况出现了。我不太确定问题是什么。 ***.com/a/1775870/8491726 - 请参阅答案的第一条评论 @Asesh 谢谢!我试过了,它奏效了。对于 Retired Ninja,我也尝试了该方法,但程序将我带到了调试过程,并且在第二次尝试时没有暂停屏幕。我很确定这是因为我搞砸了,但我会再试一次。 【参考方案1】:

在命令行窗口中运行程序。这样,在它退出后,输出仍然存在。

【讨论】:

【参考方案2】:

属性 -> 链接器 -> 系统 -> 子系统

控制台 (/SUBSYSTEM:CONSOLE)

Ctrl + F5 ,然后您将看到以下内容:

【讨论】:

我已经试过很多次了。问题是控制台窗口在我遍历了用值填充向量的循环后终止。平均值在 for 循环停止后显示,但只显示半秒。

以上是关于C++ 控制台应用程序窗口过早退出,但不是立即退出(VS 2017)的主要内容,如果未能解决你的问题,请参考以下文章

C ++逗号分隔的输入数组代码过早退出

PHP过早退出while循环

《过早退出是一切失败的根源》阅读心得

如果语句过早退出Bash脚本循环

在 Windows 上使用 npm install 时,Jenkins 脚本过早退出

不要过早的退出循环