gpt4 book ai didi

c++ - 在插入 vector C++之前验证用户输入

转载 作者:行者123 更新时间:2023-12-02 10:33:21 27 4
gpt4 key购买 nike

我正在编写一个简单的程序作为练习,用户在其中输入成绩(字符类型),然后系统将输入内容与包含成绩的 vector 进行比较,从而验证输入。

我在编写逻辑时遇到问题,该逻辑检查输入是否有效,将输入转换为大写,然后将输入插入 vector 中。如果用户未输入有效字符并再次要求输入有效的字符,我希望程序返回到循环的开头。现在,程序将验证输入并发送消息“请输入有效等级”,但是无论输入是对还是错,都将输入插入 vector 中。那不是期望的结果。

我刚刚开始学习c++,因此对混乱的代码感到抱歉。

这是获取用户输入,转换为大写字母并针对 vector 进行验证的函数。

void gradesInput() {
char upperGrade;
bool result = true;

for (size_t i = 0; i < dGrades.size() && result == true; i++)
{

cout << "Please enter your student grades...\n";
cin >> dGrades[i];
upperGrade = toupper(dGrades[i]);
result = validateInput(upperGrade);
if (result == true){
cout << "That's a valid grade.";
}
else {
cout << "Please enter a valid grade.";
}
}
}


这是运行验证的功能:
bool validateInput(char uInput) {
vector <char> grades(arr, arr + sizeof(arr) / sizeof(arr[0]));
bool result = binary_search(grades.begin(), grades.end(), uInput);

return result;
}

这是我正在使用的 vector 和数组声明:
std::vector <char> dGrades(10);
static const char arr[] = { 'A', 'B', 'C', 'D', 'F' };

在将输入与数组进行比较并转换为大写之后,我将用户输入插入dGrades vector 。

我将不胜感激的帮助或任何指导。

最佳答案

您希望循环播放,直到用户要求您输入10次高级别输入中的每一个有效值为止。因此,在for循环的每个迭代中,您都希望循环直到用户提供有效输入为止。只有这样,您才能进入 vector 。我建议您将其添加为找到有效输入后返回char的函数:

char getValidGrade() {
char result;
while (true) {
cout << "Please enter your student grades...\n";
cin >> result;
result = toupper(result);
if (validateInput(result)) {
cout << "That's a valid grade.";
return result;
}
else {
cout << "Please enter a valid grade.";
}
}
}

像这样用 gradesInput()调用它:

void gradesInput() {
for (auto &grade : dGrades) {
grade = getValidGrade();
}
}

关于c++ - 在插入 vector C++之前验证用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61431087/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com