繁体   English   中英

在C中解析命令行参数

[英]Parsing command line arguments in C

我有一个程序需要使用从命令行调用程序时应该设置的变量。 我希望用户能够指定选项-r-o-s-p以及一些整数。 我以前从未处理过命令行参数,但在做了一些研究之后我想出了以下内容:

int main(int argc, char *argv[]){
    for(k = 1; k < argc; k = k+2){
        if(std::string(argv[k]) == "-r"){
           n = atoi(std::string(argv[k+1]));
        }else if(std::string(argv[k]) == "-o"){
           o = atoi(std::string(argv[k+1]));
        }else if(std::string(argv[k]) == "-s"){
           p = atoi(std::string(argv[k+1]));
        }else{
          n = 1; o = 2; p = 3;
        }
    }
}

我的想法是用户会像这样调用程序:

$ ./my_program -r 1000 -o 10000000 -s 1

为了相应地设置我的程序中的变量。 但是,当我尝试使用我的makefile编译它时,我收到一个错误:

    error: std undeclared (first use in this function)
        if(std::string(argv[k]) == "-r"){
           ^

还有更多,但我无法全部输入。 我敢肯定,如果我弄清楚这个错误,我可以弄明白其他人。 为什么C不喜欢我?

编辑:

作为一个快速说明,我确实包含了,但这并没有修复任何错误和调用make时的输出仍然是相同的。

你应该在这里使用getopt() getopt()getopt_long函数自动化解析典型的unix命令行选项所涉及的一些杂务。 它将为您节省所有的精力。

http://www.ibm.com/developerworks/aix/library/au-unix-getopt.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM