c++ vector容器中push_back函数输入一组数据时为什么跳不出输入的while循环?

刚开始学c++,用的书是《c++ primer》的第五版,题目如下:
图片说明
代码如下:

#include<iostream>
#include<vector>
using namespace::std;
int main()
{
    vector<int>num;
    int word, sum=0;
    while (cin >> word)
    {
        num.push_back(word);
    }
    for (unsigned int i = 0; i < num.size() - 1; i++)
        {
            sum = num[i] + num[i + 1];
        }
    cout << sum << endl;
}

调试结果:
图片说明

写第一问时候发现调试时候输入之后按回车没有反应了,如果我把下面的求和程序放入while循环中其实可以输出结果,只不过结果有些问题。
试了下紧挨着在while循环下面cout<<"a";但是也没有输出
感觉是因为输入结束之后一直跳不出push_back的while循环,
书上和网上的例子都是这样,但我的就不行,迷惑????

c++

2个回答

因为你没有设置循环结束条件,只能通过 cin 的输入结束方式退出循环。
在你输入完字符串后,键下回车后,再ctrl+Z(windows环境下是ctrl+z,而linux/unix下是ctrl+d)试试能不能结束循环。
或者换种思路,如果 cin 接收到的某个固定字符时作为跳出循环的条件。

你应该仔细看看书,书里面第一章说了的,cin流输入,要输入结束符或者非法字符让流中断,你输入完想输入的整型数据后,Ctrl+Z;
书的13 14页

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问