C++ 验证阵列用户输入c++;

C++ 验证阵列用户输入c++;,c++,C++,我一直在试图找到一种方法,从键盘获取用户对数组的输入。用户最多可以输入100个元素。如果用户希望在任何时候停止,则输入0,数组将不再接受任何输入。当我运行下面的代码并输入0时,它仍然会通过while循环。我不知道我做错了什么。正在寻求有关此问题的帮助 #include <iostream> #include <iomanip> using namespace std; #define i 10 void getElements(int array[]); int

我一直在试图找到一种方法,从键盘获取用户对数组的输入。用户最多可以输入100个元素。如果用户希望在任何时候停止,则输入0,数组将不再接受任何输入。当我运行下面的代码并输入0时,它仍然会通过while循环。我不知道我做错了什么。正在寻求有关此问题的帮助

#include <iostream>
#include <iomanip>

using namespace std;

#define i 10

void getElements(int array[]);

int main()
{  
    int array[i];
    getElements(array);

    cout << array;
    return 0;
}
void getElements(int array[])
{  
   cout << "Please enter up to " << i 
        << " positive nonzero integer elements. Enter 0 to stop input.\n" << endl;
   for(int count = 0; count < i; count++)
   {  
        cout << "array[" << count << "]: ";
        cin >> array[count];
        while((!array[count]) || (array[count] < 0))
        {   
            cin.clear();
            cin.ignore(10000, '\n');
            cout << "Sorry, invalid input. Was expecting a positive integer." 
                 << " Please try again." << endl;
            cout << "array[" << count << "]: ";
            cin >> array[count];
        }
        if (array[count] == 0)
        {
            // code to stop input from keyboard.
            cout << "stop input" << endl;
        }
   }
}
#包括
#包括
使用名称空间std;
#定义i 10
void getElements(int数组[]);
int main()
{  
int数组[i];
getElements(数组);

cout我确实建议在执行此操作时避免使用数组。我相信问题在于您没有初始化数组的大小。下面是使用
std:vector

向量getElements(int maxCount) { 向量结果=新向量();
cout据我所知,当用户输入0时,您需要一种停止的方法。为此,您可以在循环中使用break关键字

if (array[count] == 0)
    {
        cout << "stop input" << endl;
        break;
    }
if(数组[计数]==0)
{

CUT提示:不要在C++中使用<代码> < <代码>,使用适当的类型和值使用<代码> const <代码>。此外,保留代码< > <代码>如果不完全粗鲁,则确实是不方便的,这将是免费的用作迭代器变量。这将更好地表示为<代码> const int Max值= 10 。或者
push_back
。如果可以,请不要使用C数组。(1)使用临时变量读取值,并仅在值为正时存储。(2)使用
if
语句,而不是
while
,以及
break
(3)当
出现时,请仔细考虑
的情况。很抱歉,我保留了。不会再发生了!!您好,谢谢您的回复,老实说,我喜欢使用向量,但我们还没有在课堂上讨论过它们。有没有办法不用向量就可以做到这一点?是的,检查更新的答案。int[]是什么很遗憾,这个问题的答案是:使用数组,错误的是它会被更好地删除。在C++中定义一个VLA甚至不编译。返回一个C Sytle数组。它在堆栈上定义,并且不再存在。哇。PATRKLE。请删除你的答案。
if (array[count] == 0)
    {
        cout << "stop input" << endl;
        break;
    }