Main Theme
2016-09-17 02:06
采纳率: 33.3%
浏览 2.1k
已采纳

c++用for循环遍历vector只能输出第一个元素?

大家好,我是小白,目前刚开始学习c++。现在想将若干整数给vector,再通过for循环遍历vector,代码如下:
#include
#include
#include
using std::cin;
using std::cout;
using std::endl;
using std::vector;
int main()
{
int a;
cin >> a;
vector number;
while (cin.get()!='\n')
number.push_back(a);
for (unsigned int i = 0; i < number.size();i++)
cout << number[i]<< endl;
getchar(); system("pause");
return 0;
}
结果如下:图片说明
跟网上的for循环一样啊,难道是开始的将整数给vector出错了?请各位吊大的大神给予指点,谢谢!

  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 邀请回答

4条回答 默认 最新

  • Valtava 2016-09-17 06:19
    最佳回答

    你的循环这里:

     while (cin.get()!='\n')
            number.push_back(a);
    

    a的值从未改变,因此vector里面全是a的值,也就是全是1.所以并不是只输出了第一个数字,而是输出了所有数字但是所有数字都是1.
    因为cin.get()也可以获取空格,所以你的vector长度其实比数字长度要大,推荐使用:

      while (cin >> a)
            number.push_back(a);
    

    这种情况下, Unix用Ctrl+D , windows 用Ctrl + Z + Enter结束输入。

    如果你就是要用'\n'结束输入,并且只想获得个位数的数字,也可以

     while ((a = std::cin.get()) != '\n'){
            if (!isdigit(a))
                continue;
            number.push_back(a - '0');  #cin.get()获得的是ASCII码,直接输入得到的并不是你输入的数字
        }
    
    评论
    解决 无用
    打赏 举报
查看更多回答(3条)

相关推荐 更多相似问题