Objective c 如何在开关情况下比较字符串而不是整数?
我有这样一段代码,试图在Switch Case中比较字符串:Objective c 如何在开关情况下比较字符串而不是整数?,objective-c,c,Objective C,C,我有这样一段代码,试图在Switch Case中比较字符串: char input[50+1]; fgets( input, 50, stdin ); switch (input) { case "register": NSLog(@"Voce escolheu a opcao de cadastro"); break; case "enter": NSLog(@"Voce escolheu a opcao de entrada")
char input[50+1];
fgets( input, 50, stdin );
switch (input) {
case "register": NSLog(@"Voce escolheu a opcao de cadastro");
break;
case "enter": NSLog(@"Voce escolheu a opcao de entrada");
break;
case "exit": NSLog(@"Voce escolheu a opcao de saida");
break;
}
此命令返回一个错误,因为我认为我们无法在“case”命令之后编写文本。我希望有人能帮我解决这个问题,我相信还有其他方法可以使用字符串制作开关盒,但是如何制作呢?你不能。开关仅适用于整数。最好的选择是一系列if-else语句或一个查找表(例如NSDictionary)。查找选项工作得很好。考虑:
NSArray *strings = @{@"string1", @"string2"};
NSUInteger index = [strings indexOfObject:input];
switch(index) {
case 0:
//stuff for string 1;
case 1:
// stuff for string 2:
case NSNotFound:
// not found;
}
据我所知,这在C语言中是不可能的。你必须使用
if
语句。是的,man Yeees man,我要找的是感谢你的+1,并解决了这个问题。这种方法也可以很容易地定位字符串,因为它们被隔离在单个数组中,而不是分散在代码中。希望它能帮助你!