I want to parse a few command line arguments using boost :: program_options. However, some arguments are strings enclosed in double quotes. This is what I have -
void processCommands(int argc, char *argv[]) { std::vector<std::string> createOptions; boost::program_options::options_description desc("Allowed options"); desc.add_options() ("create", boost::program_options::value<std::vector<std::string> >(&createOptions)->multitoken(), "create command") ; boost::program_options::variables_map vm; boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), vm); boost::program_options::notify(vm); if(vm.count("create") >= 1) { std::string val1 = createOptions[0]; std::string val2 = createOptions[1]; ...
this works great when i do
cmdparsing.exe --create arg1 arg2
But it doesn't work when I do
cmdparsing.exe --create "this is arg1" "this is arg2"
from the windows command prompt. For the second option, it is converted to ["this" "is" "arg1" "this" "is" "arg2"] in the createOptions vector. So val1 gets "this" and val2 gets "is" instead of "this is arg1" and "this is arg2" respectively.
How can I use boost :: program_option to make this work?
c ++ boost windows command-line-arguments boost-program-options
Onkar deshpande
source share