program_options
當用戶不提供這些選項時,會自動爲選項分配默認值。您甚至不需要檢查用戶是否提供了給定的選項,只是在這兩種情況下都使用相同的分配。
#include <iostream>
#include <boost/program_options.hpp>
namespace po = boost::program_options;
int main (int argc, char* argv[]) {
po::options_description desc("Usage");
desc.add_options()
("robots", po::value<int>()->default_value(3),
"How many robots do you want to send on a murderous rampage?");
po::variables_map opts;
po::store(po::parse_command_line(argc, argv, desc), opts);
try {
po::notify(opts);
} catch (std::exception& e) {
std::cerr << "Error: " << e.what() << "\n";
return 1;
}
int nRobots = opts["robots"].as<int>();
// automatically assigns default when option not supplied by user!!
std::cout << nRobots << " robots have begun the silicon revolution"
<< std::endl;
return 0;
}
這個問題的解決方案不能簡單,但我找不到它在任何地方記錄,所以我提出了這個問題。 – flies 2012-04-17 16:27:58
相關:如何判斷用戶是否提供了具有默認值的選項http://stackoverflow.com/questions/9200598/boost-program-options-with-default-values-always-present-when-using -vm-count('count'不起作用,顯然是因爲即使沒有提供該選項,變量映射也會分配默認值,所以count不會爲零) – flies 2012-04-17 16:32:44
http://www.boost.org/doc/ libs/1_65_1/doc/html/boost/program_options/typed_value.html#idp698602832-bb用於技術說明和http://www.boost.org/doc/libs/1_65_0/doc/html/program_options/tutorial.html# idp419580960的相關教程說明。無可否認,在使用你的答案尋找正確的名字後,我不得不尋找那些人。 – patrickvacek 2017-10-18 11:59:06