C++;如何使用数字和字母选项实现菜单 我想使用C++中的菜单,它既有字母又有数字。例如,输出可能是: ======================== (1) Do something (2) Do something (a) Do something (b) Do something ========================

C++;如何使用数字和字母选项实现菜单 我想使用C++中的菜单,它既有字母又有数字。例如,输出可能是: ======================== (1) Do something (2) Do something (a) Do something (b) Do something ========================,c++,input,menu,char,int,C++,Input,Menu,Char,Int,是否有一种测试用户输入的方法来确定它是char还是int并相应地处理它 如果我使用: int choice; cin >> choice; 用户输入一个字符,当然cin会返回一个错误。我正在寻找一种简单的方法来测试用户输入的数字或字符,并让程序根据这个决定做出不同的反应 [更新] 我找到了我一直在寻找的答案。我是这样做的: string choice; cout << "Your choice: "; cin >> choice; if( isdigit(

是否有一种测试用户输入的方法来确定它是char还是int并相应地处理它

如果我使用:

int choice;
cin >> choice;
用户输入一个字符,当然cin会返回一个错误。我正在寻找一种简单的方法来测试用户输入的数字或字符,并让程序根据这个决定做出不同的反应

[更新]

我找到了我一直在寻找的答案。我是这样做的:

string choice;
cout << "Your choice: ";
cin >> choice;

if( isdigit(choice[0]) )
{
    theInt = stoi(wChoice);
    // do something with int
}
else if( choice[0] = 'a' )
    // do menu option a
字符串选择;
选择;
if(isdigit(选项[0]))
{
theInt=stoi(wChoice);
//用int做点什么
}
else if(选项[0]=“a”)
//做菜单选项a

您最好使用
ctype.h
中的
isdigit
方法检查字符是否为十进制数字字符,使用
isalpha
方法检查字符是否为字母

例如,可能有以下选项:1、2、3、n、s

我看到的最简单的解决方案是有一个菜单选择代码,如

char choice;
std::cin >> choice;

switch(choice) {
case `1`:
   // Do menu option one
   break;
case `2`:
   // Do menu option two
   break;
case `3`:
   // Do menu option three
   break;
case `n`:
   // Do menu option "n"
   break;
case `s`:
   // Do menu option "s"
   break;
}

如果需要处理大于
9
的数值选择,只需使用
std::string
作为输入字段:

std::string choice; // <<<    
std::cin >> choice;

为此,您需要将输入作为字符串读入,然后对其进行解析,以查看它是字母字符还是数字字符串。类似于此(警告,我主要是C程序员,所以使用C字符串而不是真正的字符串):

#定义输入大小8
字符输入[输入大小];//根据需要更改大小
cin.getline(输入,输入大小);
if(cin.good())

如果(输入[0]>='0'和输入[0]='a'和输入[0]
std::string choice;
可能是最灵活的数据类型IMHO。为什么这个问题被否决了?一些有用的输入会很好。=p感谢精彩的反馈,panda。看起来我们试图解决稍微不同的问题-我想这个问题可能是处理从som生成动态菜单的问题e数据,尽管无可否认,在数字的情况下转换为int是没有意义的。德纳达!为什么还要费心于
char输入[input_SIZE];
char数组?“
int
不能包含
cha
r”这肯定不是(整体)事实!你是对的。我认为这是理所当然的。我知道我可以使用switch语句来处理这个问题,但我希望找到一个更好的解决方案,因为我想将整数选择用于类似向量[choice]的向量中,但非数字输入的使用方式会有所不同。
if(choice == "1") {
   // Do menu option one
}
else if(choice == "2") {
   // Do menu option two
}
// ...
else if(choice == "42") {
   // Do menu option fortytwo
}
else if(choice == "n") {
   // Do menu option "n"
}
else if(choice == "s") {
   // Do menu option "s"
}
#define INPUT_SIZE 8
char input[INPUT_SIZE]; // change size as appropriate
cin.getline(input, INPUT_SIZE);

if (cin.good())
  if(input[0] >= '0' && input[0] <= '9') {
      int value = atoi(input);
  } else if(input[0] >= 'a' && input[0] <= 'z') {
      char value = input;
  }
}