提问人:ChaiTea 提问时间:10/25/2023 最后编辑:ChadChaiTea 更新时间:10/25/2023 访问量:55
将输入的数字存储到整数数组中的过程循环
Procedure loop to store an inputted number into an array of integers
问:
我正在尝试使用菜单在我的主程序中调用此过程,并且只输入一个数字,然后返回主程序。我还想将这个数字存储在一个数组中,这样如果我愿意,我可以将多个数字放在数组中并将它们保留在它们的索引中。
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]
答:
1赞
Chad
10/25/2023
#1
你可以通过正确使用 来解决这个问题,但老实说,这比它的价值要复杂得多,有时甚至是不可能的。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
1赞
Pepijn Kramer
10/25/2023
#2
不要使用“C”样式数组,而是像这样使用std::vector
#include <iostream>
#include <vector>
bool is_valid_input(const std::string& input)
{
for (const auto c : input)
{
if (!std::isdigit(c)) return false;
}
return true;
}
std::vector<int> get_user_input()
{
std::vector<int> values;
std::string input;
do
{
std::cout << "Enter digits : ";
std::cin >> input;
} while (!is_valid_input(input));
for(const auto c : input)
{
values.push_back(static_cast<int>(c-'0'));
}
return values;
}
int main()
{
auto values = get_user_input();
for(const int value : values)
{
std::cout << value << " ";
}
return 0;
}
上一个:使用“for”循环遍历字典
下一个:如何阻止循环结束得太快?
评论
cin.ignore()
std::getline()