解析const char * argv []

时间:2016-09-16 13:12:23

标签: objective-c

代码: -

#import <Foundation/Foundation.h>

    int main(int argc, const char* argv[]){
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
        char* charString = argv[1];

    printf("%s", charString);


        [pool drain];
        return 0;
    }

问题: -

但上面的行是打印null,如何获取整数数组;

1 个答案:

答案 0 :(得分:0)

argv[0]是您的计划的名称。如果您想阅读参数,请先阅读argv[1]。当然,您还应该使用argc > 1检查实际上是否有一些参数。

或者您可以使用[[NSProcessInfo processInfo] arguments]

int main(int argc, const char* argv[]){
    @autoreleasepool {
        for (NSInteger i = 0; i < argc; i++) {
            NSString *stringArgument = [NSString stringWithFormat:@"%s", argv[i]];
            NSLog(@"%@", stringArgument);
            NSLog(@"Integer value: %i", [stringArgument intValue]);
        }
    }

    return 0;
}

int main(int argc, const char* argv[]){
    @autoreleasepool {
        for (NSString *argument in [NSProcessInfo processInfo].arguments) {
            NSLog(@"%@", argument);
            NSLog(@"Integer value: %i", [argument intValue]);
        }
    }

    return 0;
}

参数:10 20

输出:

  

ObjcTest [65709:1964435] / Projects / ObjcTest / Build / Products / Debug / ObjcTest
  ObjcTest [65709:1964435]整数值:0
  ObjcTest [65709:1964435] 10
  ObjcTest [65709:1964435]整数值:10
  ObjcTest [65709:1964435] 20
  ObjcTest [65709:1964435]整数值:20

请注意,第一个参数无法转换为整数,因此打印值为0