C++代码疑问,为什么不能输入任意个数整数

像要允许用户输入任意个数(最多不超过20)的整数,用空格分隔,再保存进一个数组内。于是百度了一种方法

#include 
using namespace std;

int missile[20];
int main()
{
    int height, index = 0;
    while (cin.get() != '\n') {
        if (index < 20) {
            cin >> height;
            cout << "录入" << height << endl;   //输入这句也根本没有被执行,有跟没有一样输出结果
            missile[index] = height;
            index++;
        }
        else {
            break;
        }
    }
    for(int i:missile){
        if (i != 0) {
            cout << i << endl;
        }
    }
}

img


但是如图,保存进数组missile里的元素比输入少一个,whiie循环中的cout也根本没有被执行,为什么?

cin.get()会读取掉一个字符,而且i!=0才输出?
修改如下:

#include <iostream>
using namespace std;
 
int missile[20];
int main()
{
    int height, index = 0;

    do
    {
        cin>>height;
        if (index < 20) {
            cout << "录入" << height << endl;   //输入这句也根本没有被执行,有跟没有一样输出结果
            missile[index] = height;
            index++;
        }
        else {
            break;
        }
    }while (cin.get() != '\n') ;
    for(int i=0;i<index;i++){
            cout << missile[i] << endl;
        }
    return 0;
}

兄弟,你用visual studio打个断点看下,或者清理解决方案重新build下,感觉你的现象和代码不太匹配呢

我这里就是跟你说的一样,1没有了。

img

你的代码在我这的运行结果,你重新build看看

img