2012-04-30 2 views
1

Я использую опции расширенной программы, и я хочу интерпретировать некоторые позиционные аргументы как строки или ints на основе указанного пользователем командной строки. Например:опции форматирования - как условно ввести позиционные аргументы?

foo -asint outputfile 10 11 12 
foo -asstr outputfile 10 11 12 

бы список (10,11,12), как Интс в первом примере и строк в секунду.

Не могу понять, как это сделать, используя boost po. Вот отрывок из моего командной строки разбора:

// basic options group 
po::options_description genericOpts("allowed options"); 
genericOpts.add_options() 
    ("help,h", "display help message/usage") 
    ("asint,i", "interpret arguments ints instead of strings") 
; 

// hidden options group - don't show in help 
po::options_description hiddenOpts("hidden options"); 
hiddenOpts.add_options() 
    ("filename", po::value<string>()->required(),"output file") 
    ("inputs", po::value<vector<string>>(), "inputs, either strings or ints") 
; 

po::options_description cmdline_options; 
cmdline_options.add(genericOpts).add(hiddenOpts); 

po::positional_options_description p; 
p.add("filename",1).add("inputs", -1); 

po::variables_map vm; 
po::store(po::command_line_parser(argc, argv). 
      options(cmdline_options).positional(p).run(), vm); 

ответ

1

Всегда читать их как строки и сделать некоторые пост-обработку в зависимости от других параметров.

 Смежные вопросы

  • Нет связанных вопросов^_^