将输入的数字存储到整数数组中的过程循环

问题描述 投票:0回答:1

我正在尝试使用菜单在主程序中调用此过程,并且仅输入一个数字,然后返回主程序。我还想将这个数字存储在一个数组中,这样如果我愿意,我可以将多个数字放入数组中并将它们保留在索引中。

void procedure1(int Num1[], int size = 10)
{
   for (int x = 0; x < size; x++)
   {
       cout << "Input a number: ";
       cin >> Num1[x];
   }

}

它输出“输入数字”10 次,我只希望它执行一次,但将第一个数字存储在 Num1[0] 中,将下一个输入的数字存储在 Num1[1] 中...依此类推,直到 Num1 [10]

c++ loops menu storage
1个回答
0
投票

您可以通过正确使用

cin.ignore()
来解决这个问题,但老实说,这比它的价值要复杂得多,而且有时甚至不可能。

我的建议是始终将数据作为字符串读入,然后验证输入。这是一个例子:

#include <iostream>
#include <sstream>
#include <string>
using namespace std;

int main()
{
    
    for(int x = 0; x < 10; ++x)
    {
        std::cout << "Enter a number:\n";
        
        std::string in;
        std::getline(cin, in);
        
        int num = 0;
        std::istringstream ss{in};
        
        // Validate input here
        if(ss >> num)
        {
            std::cout << "Entered: " << num << '\n';
        }
        else
        {
            std::cout << "Invalid Nuber!" << '\n';
        }
    }
    
    return 0;
}

鉴于此输入:

10
20
30
NOT A NUMBER
40
50
60
70
80
90

给出这个输出:

Enter a number:
Entered: 10
Enter a number:
Entered: 20
Enter a number:
Entered: 30
Enter a number:
Invalid Nuber!
Enter a number:
Entered: 40
Enter a number:
Entered: 50
Enter a number:
Entered: 60
Enter a number:
Entered: 70
Enter a number:
Entered: 80
Enter a number:
Entered: 90
© www.soinside.com 2019 - 2024. All rights reserved.