我编写了以下代码,并且在很大程度上它完成了我想要它做的事情。问题在于,当用户可以输入类似" 111"输出为"您输入了数字1。"我想将用户的输入限制为1个字符。有什么建议?我确信解决方案非常简单,但我无法弄清楚。此外,代码必须保持switch语句的形式。谢谢!
#include <iostream>
using namespace std;
int main()
{
char i;
cout << "Please enter a number between 1 and 9." << endl;
cout << "Enter a number: ";
cin >> i;
switch (i)
{
case '1':
cout << "You entered the number one." << endl;
break;
case '2':
cout << "You entered the number two." << endl;
break;
case '3':
cout << "You entered the number three." << endl;
break;
case '4':
cout << "You entered the number four." << endl;
break;
case '5':
cout << "You entered the number five." << endl;
break;
case '6':
cout << "You entered the number six." << endl;
break;
case '7':
cout << "You entered the number seven." << endl;
break;
case '8':
cout << "You entered the number eight." << endl;
break;
case '9':
cout << "You entered the number nine." << endl;
break;
default:
cout << "You did not enter a valid number." << endl;
break;
}
system("pause");
return 0;
}
答案 0 :(得分:1)
您可以使用c标准io库中的getchar(char)。
#include <stdio.h>
...
char i;
int j;
cout << "Please enter a number between 1 and 9." << endl;
cout << "Enter a number: ";
getchar(j);
i=(char)j;
switch(i){
...
答案 1 :(得分:0)
有一种方法很容易:只需将char c
切换为int n
,然后将case '1'
替换为case 1
等。尝试此操作直到用户输入有效编号,然后输入“a”(即不是数字的东西)。通常,简单的方法也是错误的方式。 ;)
现在,您可以做的是使用这段代码:
std::string line;
while (getline(std::cin, line))
{
if (line == "1") {
std::cout << "You entered the number one." << std::endl;
} else if (line == "2") {
// ....
} else {
std::cout << "You didn't enter a valid number" << std::endl;
}
}
这里的区别在于,由于输入是行基,没有进一步解释,因此当输入不能解释为数字时,不会修改streamstate。在与用户交互时,这通常更加健壮。如果以后想要以数字编号,请查看stringstreams或lexical_cast进行转换。
答案 2 :(得分:0)
你可以使用getch()从屏幕上获取一个字符,你可以检查它是否是一个数字,然后再次询问有效的输入。