Hello,
I have the following questions, I have breifly scoured the archive but haven't quite found what I want, so if this already been covered please point me in the direction.
desc.add_options()
("port", po::value<string>(), "port to connect to");
I have looked at modifiers for value_semantic,
one_token()
multi_token()
is there such a concept as required ?
such that for e.g.
desc.add_options()
("port", po::value<string>()->required(), "port to connect to");
causes the parser to 'die' if the value port isn't defined ?
currently I am using vm.count("port") to deduce whether it has been defined.
My other question is, why does the type have to be specified when extracting something from the variable map ?
for e.g. vm["port"].as<string>() ... when it has already been defined in the configurations options.
I ask this because I have a function that I am using:
bool check_key(po::variables_map &vm, string key, bool required, bool print) {
if (required && !(vm.count(key))) {
cerr << "fatal: " << key << " not defined." << endl;
exit(1);
}
if (print && vm.count(key)) {
cout << key << ": " << vm[key].as<string>() << endl;
}
}
This incidentally solves my first problem of having a key(option) defined or failing if it does not exist in the variable map,
but ... say if I have a option defined as po::value<int>() inside option_description then my my function fails ... as it tries
to interpret it as a string ?
Is there a better way to do this ?
cheers,
ravi