int opt; int portnum; po::options_description desc("Allowed options"); desc.add_options() ("help", "produce help message") ("wav", po::value< vector >(),"xxx") ("word", po::value< vector >(),"yyy") ("d", po::value< vector >(),"ddd") ; po::variables_map vm; po::store(po::parse_command_line(argc, arg, desc), vm); po::notify(vm); if (vm.count("help")) { cout << "Usage: options_description [options]\n"; cout << desc; return 0; } if (vm.count("wav")) { // want to connect the words together , but fail. string wavdir; vector::const_iterator i= vm["wav"].as< vector >().begin(); vector::const_iterator e= vm["wav"].as< vector >().end(); for(; i!=e; ++i) { wavdir.append( (*i) ); wavdir.append(" "); } cout << "wav:[" << wavdir << "]\n"; } if (vm.count("word")) { // want to connect the words together , but fail. string words; vector::const_iterator i= vm["word"].as< vector >().begin(); vector::const_iterator e= vm["word"].as< vector >().end(); for(; i!=e; ++i) { words.append( (*i) ); words.append(" "); } cout << "words:[" << words << "]\n"; } if (vm.count("d")) { // want to connect the words together , but fail. string d; vector::const_iterator i= vm["d"].as< vector >().begin(); vector::const_iterator e= vm["d"].as< vector >().end(); for(; i!=e; ++i) { d.append( (*i) ); d.append(" "); } cout << "d:[" << d << "]\n"; }