C++ 基本C++;程序过早结束

C++ 基本C++;程序过早结束,c++,C++,我正在写一个简单的程序,它取一系列整数,将它们存储在一个向量中,然后打印出向量中整数的“x”个数之和。然而,在将0打印到屏幕上之后,编译器似乎跳过了我的程序,然后打印“您希望将多少个整数相加?” std::vector<int>values; int v = 0; int it = 0; int sum = 0; int main() { std::cout << "Enter values" << std::endl; while (s

我正在写一个简单的程序,它取一系列整数,将它们存储在一个向量中,然后打印出向量中整数的“x”个数之和。然而,在将0打印到屏幕上之后,编译器似乎跳过了我的程序,然后打印“您希望将多少个整数相加?”

std::vector<int>values;
int v = 0;
int it = 0;
int sum = 0;

int main() {

    std::cout << "Enter values" << std::endl;

    while (std::cin >> v) {
         values.push_back(v);
    }

    std::cout << "how many integers would you like to add together?" << std::endl;
    std::cin >> it;

    for (int i = 0; i <= it - 1; ++i) {
         sum += values[i];
    }

    std::cout<<sum;
}
std::矢量值;
int v=0;
int it=0;
整数和=0;
int main(){
标准::cout v){
值。推回(v);
}
std::cout it;

对于(int i=0;i要退出第一个
while
循环,您必须在
cin
上触发文件结束条件(例如,用一些shell按Ctrl+D)。当到达
std::cin>>it
时,流仍处于文件结束状态,因此读取操作失败,
it
保留其值为零。

您输入什么,在(std::cin>>v)时停止
loop?如果输入EOF字符,则
std::cin
处于文件结束状态,不再读取任何输入。您是如何在while循环中停止输入值的?当您尝试输入
It
时,看起来
std::cin
仍处于失败状态。通常,编写
i的惯用方法只是输入ng非整数输入导致while(std::cin>>v)失败并退出循环。在使用ctr-z终止并添加std::cin.clear()后,它将工作循环结束后。@Cook915如果您解决了自己的问题,您可以发布自己问题的答案。您还可以通过输入任何不能提取为
双精度
的内容来打破
while
循环,如
“完成”
。它可能只是处于失败状态,而不是EoF状态。我使用cin的失败状态退出循环。使用和EoF char并清除cin似乎可以解决问题