无法输入(cin)一行中超过10个整数,用空格分隔成数组?

时间:2016-03-18 05:12:53

标签: c++ arrays cin

我有一个简单的问题。 我试图使用while循环将数字列表存储到数组中。

例如,假设数组的大小为5。

如果我输入:1 2 3 4 5并按回车键,则不会出现任何问题

但是,如果数组的大小是10,我输入: 1 2 3 4 5 6 7 8 9 10然后它不起作用,然后跳过这些线。

我搜索过但无法找到答案。是不是可以输入太长的数字列表在一行中用空格分隔使用cin? 我是否必须像1 [enter] 2 [enter] ... 10 [enter]?

那样做

感谢任何帮助。

    int n=1,key,i; 
    int arra [n];


     cout << "Please enter the size of array (no more than 100): ";
     cin >> n;
     while (n>100)
     {
         cout << "Please enter a number no more than 100: ";
         cin >> n;
     }

     cout << "Please enter " << n << " numbers separated by a space and ended with Enter key: \n";

     for (i=0;i<n;i++) // store numbers into array

         cin >> arra[i];

     cout << "Please enter the key number that you want to find out: ";
     cin >> key;

     if (search(arra,n,key)==1)
        cout << "Yes, the key is in the array. \n";
     else
        cout << "No, the key is not in the array. \n";

3 个答案:

答案 0 :(得分:1)

故障是,在输入之前将n的值分配给数组的大小。

int n=1;
int arra[n];
//arra's size is 1

您应该在输入后指定大小。

while(n>100){
    cout <<"Enter a number less than 100\n";
    cin >> n;
}
//now declare the array
int arra[n];

现在,arra []的大小由用户输入。

答案 1 :(得分:0)

数组长度应始终保持不变。 int arra[n]不起作用,因为n是变量。根据您的要求设置int arra[50]或其他内容。设置高于必要的位置是可以的。但是,如果您想要一个可在运行时设置的大小数组,则需要dynamic memory allocation。如果您对动态内存分配感兴趣,那么您必须学习c ++的new and delete

答案 2 :(得分:0)

您正在静态地为阵列分配内存。尝试使用vector:

vector<int> arra;

在输入值时,只需在构建函数中使用:

int input;
cin >> input;
arra.push_back(input);
这样,您不必设置限制为100,因为它为每个新输入动态分配内存。