2012-03-16 3 views
2

Я хочу прочитать целочисленный массив из консоли с помощью boost :: program_options. Длина массива неизвестна, и я не хочу читать все данные в одной попытке. Как я могу это сделать?boost :: program_options читает целочисленный массив с консоли

Что я делаю сейчас

$ ./foo --array "1, 2, 3"

, а затем заполнить обр [] путем разделения входной строки.

Но я хочу что-то вроде

$ ./foo --array 1 --array 2 --array 3

и читать его в обрах []. Также хотите знать длину arr [], не хотите, чтобы это было параметром командной строки.

ответ

5

Используйте вектор вместо массива. Затем просто укажите вектор в качестве опции:

po::options_description desc("Allowed options"); 
desc.add_options() 
    ("array", po::value< vector<int> >()) 
; 

Каждая опция в командной строке будет добавлена ​​к вектору.

+0

спасибо большое, это помогло. –

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