如何在switch case中比较字符串而不是整数?

时间:2014-04-06 03:43:34

标签: 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");

            break;

        case "exit": NSLog(@"Voce escolheu a opcao de saida");

            break;


    }

这个命令给我一个错误,因为我相信我们不能在'case'命令之后写一个文本。我希望有人可以帮我解决这个问题,我相信还有其他方法可以使用字符串制作一个Switch Case,但是如何?

2 个答案:

答案 0 :(得分:1)

查找选项非常有效。考虑:

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;
}

答案 1 :(得分:0)

你不能。 Switch仅适用于整数。最好的选项是if-else语句链或查找表(例如NSDictionary)。