В настоящее время я работаю с boost::program_options
. Моя программа должна принимать в качестве аргументов (среди прочего ...) произвольное количество «списков» произвольной длины. Например, пользователь должен иметь возможность вызватьC++: Boost program_options: Несколько списков аргументов
./myprogram -list item1 item2 item3 -list item1 item2 -list item1 item2
Очевидно, что я не хочу, чтобы получить один список/вектор со всеми элементами, один за другим, в результате, но (в данном случае) три списка/векторы (или, например, один вектор векторов, содержащих элементы) с двумя или тремя элементами в списке (каждый элемент должен быть строкой, но я думаю, это не имеет значения). Как я уже говорил, количество списков (а также количество элементов в списке!) Должно быть произвольным. Как это сделать с помощью boost::program_options
?
AFAIK нет прямого пути сделайте это, так как каждый 'itemn' будет считаться индивидуальным вариантом. Одна вещь, которую вы можете сделать, это определить опцию «list», которая имеет тип «vector», а затем, когда вы передаете аргументы, передайте строку с разделителями, такую как «-list» item1, item2, item3 «-list», item4, item5 "-list" item1, tem2 "' –
Nim
Хорошо, если нет другого способа, я бы подумал об этом, но я на самом деле думаю, что это очень сложно для пользователя и довольно неуравновешен. – DerAuenlaender
Я уже пытался сделать что-то подобное раньше, но не удалось. Хотя параметры программы Boost очень приятны для более простых проблем, как только вы найдете прецедент или необходимость чего-то не поддерживаемого, вам в основном придется отказаться от него и написать собственную обработку аргументов командной строки. –