2014-11-25 132 views
1

我在C++中使用gflags来解析命令行参数。我想有一个接受参数列表的命令行标志。例如下面的例子中的param访问与命令行参数相关的整数列表

./myprog --param 0 1 2 3 

如何访问与此参数关联的整数列表?

+0

你在用什么语言? – Scooter 2014-11-25 11:52:03

+0

我正在使用C++(编辑问题) – 2014-11-25 12:02:12

+0

也许应该添加一个C++标签以获得更多的注意。 – Scooter 2014-11-25 12:04:07

回答

2

GFLAGS不支持阵列输出,它只是跳过未知的数据,所以你可以选择:
选择1,GFLAGS之前手动解析ARGS,但添加参数去GFLAGS - 为没有错误解析,例如:

#include <stdio.h> 
    #include <stdlib.h> 
    #include <string.h> 
    #include <vector> 
    #include <gflags/gflags.h> 

    DEFINE_string(param, "string", "string"); 

    int main (int argc, char **argv) 
    { 
     vector<int> param; 
     for (int i = 0; i < argc; i++) 
     { 
      if (!strcmp(argv[i], "--param")) 
      { 
       for (++i; i < argc; i++) 
       { 
        if (!isdigit(argv[i][0])) 
         break; 
        param.push_back(atoi(argv[i])); 
       } 
      } 
     } 
     gflags::ParseCommandLineFlags(&argc, &argv, false); 
     return 0; 
    }  


选择2:
修改您输入的命令行,例如给:--param 0,1,2,3
和接收PARAM作为字符串中GFLAGS,分割字符串用“”和转换成阵列的整数。

+0

我认为选择2更好。我会尝试的。 – 2014-12-08 20:15:30