大家好,我是小白,目前刚开始学习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出错了?请各位吊大的大神给予指点,谢谢!

c++用for循环遍历vector只能输出第一个元素?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- 「已注销」 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码,直接输入得到的并不是你输入的数字 }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报