Objective c 如何在开关情况下比较字符串而不是整数?

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")

我有这样一段代码,试图在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");

            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,并解决了这个问题。这种方法也可以很容易地定位字符串,因为它们被隔离在单个数组中,而不是分散在代码中。希望它能帮助你!