Boost.Program_Options: когда & lt; bool & gt; указывается в качестве параметра командной строки, каковы допустимые параметры командной строки?

Учитывая следующее простое использование Boost.Program_Options:

boost::program_options::options_description options("Options");

options.add_options()

("my_bool_flag,b", boost::program_options::value<bool>(), "Sample boolean switch)")

;

… какие аргументы командной строки будут оцениваться falseи что true?

(То есть, предположим, что программа называется «foo» и выполняется в командной строке как:
foo -b ?
… с вопросительным знаком в качестве заполнителя для какого-либо другого текста: каковы все возможные варианты текста, которые будут правильно оцениваться falseи что true?)

9

Решение

Глядя на $ (BOOST_ROOT) /libs/program_options/src/value_semantic.cpp, вы можете найти:

/* Validates bool value.
Any of "1", "true", "yes", "on" will be converted to "1".<br>
Any of "0", "false", "no", "off" will be converted to "0".<br>
Case is ignored. The 'xs' vector can either be empty, in which
case the value is 'true', or can contain explicit value.
*/
BOOST_PROGRAM_OPTIONS_DECL void validate(any& v, const vector<string>& xs,
bool*, int)
{
check_first_occurrence(v);
string s(get_single_string(xs, true));

for (size_t i = 0; i < s.size(); ++i)
s[i] = char(tolower(s[i]));

if (s.empty() || s == "on" || s == "yes" || s == "1" || s == "true")
v = any(true);
else if (s == "off" || s == "no" || s == "0" || s == "false")
v = any(false);
else
boost::throw_exception(invalid_bool_value(s));
}
20

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector