大家好,我是小白,目前刚开始学习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出错了?请各位吊大的大神给予指点,谢谢!
你的循环这里:
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码,直接输入得到的并不是你输入的数字
}
开始的#include头文件上传问题时没有显示出来
先看有没有插进vector里面去
你开始的时候就输入了一个1;
while (cin.get()!='\n'){
cin>>a;
number.push_back(a);
}
你自己再试试