【问题标题】:C++ console application window exiting too early, but not immediately (VS 2017)C++ 控制台应用程序窗口过早退出,但不是立即退出(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 运行程序,但不幸的是,同样的情况出现了。我不太确定问题是什么。
  • stackoverflow.com/a/1775870/8491726 - 请参阅答案的第一条评论
  • @Asesh 谢谢!我试过了,它奏效了。对于 Retired Ninja,我也尝试了该方法,但程序将我带到了调试过程,并且在第二次尝试时没有暂停屏幕。我很确定这是因为我搞砸了,但我会再试一次。

标签: c++


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    控制台 (/SUBSYSTEM:CONSOLE)

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

    【讨论】:

    • 我已经试过很多次了。问题是控制台窗口在我遍历了用值填充向量的循环后终止。平均值在 for 循环停止后显示,但只显示半秒。
    猜你喜欢
    • 2014-09-04
    • 2014-02-17
    • 1970-01-01
    • 2011-02-01
    • 2012-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多