0

我已经创建了一个命令行工具应用程序( Xocde --> New App --> 命令行工具)并且它的运行没有任何问题,现在我想通过终端运行它并传递一些命令行参数,像这样

int main(int argc, const char * argv[])
{

    std::cout << "got "<<argc<<" arguments";

    for ( int i = 0; i<argc;i++){
        std::cout << "argument:"<<i<<"= "<<argv[i];
    }

//// some other piece of code 
}

如果我在终端上输入

>open VisiMacXsltConverter --args fdafsdfasf i am getting output 

got 1 argumentsargument:0= /Applications/VisiMacXsltConverte

我想通过命令行知道传递参数的方法是什么

4

2 回答 2

3

如果您只使用一个 -(连字符),这些值将进入一个易失的 UserDefaults 字典(还将在整个过程中覆盖其他键)。

./program -Param 4

int main(int argc, const char * argv[])
{

    @autoreleasepool {
        NSLog(@"param = %@", [[NSUserDefaults standardUserDefaults] valueForKey:@"Param"]);        
    }
    return 0;
}

或者您可以将这些传递给您想要的任何方式并使用以下内容,这将为您提供 NSStrings 的 NSArray。

[[NSProcessInfo processInfo] arguments];
于 2012-05-17T08:44:58.110 回答
1

Why you want to run it with open?

I would run it with (if you have it in you $PATH you should omit the './'):

./VisiMacXsltConverter arg1 arg2 arg3 arg4

Hope I have not misunderstood you question.

于 2012-05-17T09:24:50.117 回答