Login
boost,program_options
84 просмотров
Перейти к просмотру всей ветки
scorpi_ коренной житель
in Antwort Chipolino 03.02.07 19:49, Zuletzt geändert 03.02.07 22:49 (scorpi_)
Ты не так задаёшь аргументы. Надо так: "prog --filelist file1 --filelist file2 --filelist file3". Или кратко: "prog -l file1 -l file2 -l file3".
PS Notify нужен только в том случае, если ты указываешь callback-функции. Я честно говоря тоже не понимаю, зачем здесь нужны колбэки. Получается просто два разных способа получить эти данные.
PS Notify нужен только в том случае, если ты указываешь callback-функции. Я честно говоря тоже не понимаю, зачем здесь нужны колбэки. Получается просто два разных способа получить эти данные.
В ответ на:
#include <iostream>
#include <iterator>
#include <vector>
#include <string>
#include <algorithm>
#include <boost/program_options/options_description.hpp>
#include <boost/program_options/variables_map.hpp>
#include <boost/program_options/parsers.hpp>
namespace po = boost::program_options;
void cb( const std::vector< std::string >& v )
{
std::copy( v.begin(), v.end(), std::ostream_iterator<std::string>( std::cout, "\n" ) );
}
int main( int ac, char **av )
{
po::options_description desc("Allowed options");
desc.add_options()
("include-path,I", po::value< std::vector<std::string> >()->notifier(&cb), "include path");
po::variables_map vm;
po::store( po::parse_command_line( ac, av, desc ), vm );
po::notify( vm );
if ( vm.count("include-path") )
{
std::vector<std::string> const& v = vm["include-path"].as< std::vector<std::string> >();
std::copy( v.begin(), v.end(), std::ostream_iterator<std::string>( std::cout, "\n" ) );
}
}