qq_39259295
qq_39259295
采纳率57.1%
2019-10-30 15:26 阅读 512

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循环,
书上和网上的例子都是这样,但我的就不行,迷惑????

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

2条回答 默认 最新

  • 已采纳
    wojiushiwo945you 毕小宝 2019-10-30 15:34

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

    点赞 1 评论 复制链接分享
  • weixin_42922398 接受自己,改变自己 2019-10-30 15:37

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

    点赞 1 评论 复制链接分享

相关推荐