gpt4 book ai didi

c++ - 没有正确处理用户输入

转载 作者:行者123 更新时间:2023-11-28 03:27:43 26 4
gpt4 key购买 nike

因此,我正在处理的这个程序没有按照我希望的方式处理错误的用户输入。用户应该只能输入 3 位数字,以便稍后在 HotelRoom 对象构造函数中使用。不幸的是,我的导师不允许在他的类里面使用字符串对象(否则,我认为我不会有任何问题)。此外,我将 roomNumBuffer 传递给构造函数以创建一个 const char 指针。我目前正在使用 iostream、iomanip、string.h 和 limits 预处理器指令。尝试为 roomNumBuffer 输入太多字符后会出现此问题。以下屏幕截图显示了发生的情况: enter image description here

该题的相关代码如下:

cout << endl << "Please enter the 3-digit room number: ";
do { //loop to check user input
badInput = false;
cin.width(4);
cin >> roomNumBuffer;
for(int x = 0; x < 3; x++) {
if(!isdigit(roomNumBuffer[x])) { //check all chars entered are digits
badInput = true;
}
}
if(badInput) {
cout << endl << "You did not enter a valid room number. Please try again: ";
}
cin.get(); //Trying to dum- any extra chars the user might enter
} while(badInput);

for(;;) { //Infinite loop broken when correct input obtained
cin.get(); //Same as above
cout << "Please enter the room capacity: ";
if(cin >> roomCap) {
break;
} else {
cout << "Please enter a valid integer" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}
for(;;) { //Infinite loop broken when correct input obtained
cout << "Please enter the nightly room rate: ";
if(cin >> roomRt) {
break;
} else {
cout << "Please enter a valid rate" << endl;
cin.clear();
cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
}

任何想法将不胜感激。提前致谢。

最佳答案

读取一个整数并测试它是否在期望的范围内:

int n;

if (!(std::cin >> n && n >= 100 && n < 1000))
{
/* input error! */
}

关于c++ - 没有正确处理用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13483936/

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