Giriş
Bu sınıf belirtilen parametre'nin isimsiz olmasını sağlar. Yani parametre için - veya -- gibi karakterler kullanmak gerekmez.
Bu sınıfı her zaman positional_options_description nesnesine positional(...) çağrısı ile geçmek gerekir. Şöyle yaparız.
Açıklaması şöyle
Şöyle yaparız.
Şöyle yaparız. options_description sınıfında kullanılan isim ile positional_options_description.add() metoduna geçilen isim aynı olmalıdır.
Kullanım
Şöyle yaparız.
Bu sınıf belirtilen parametre'nin isimsiz olmasını sağlar. Yani parametre için - veya -- gibi karakterler kullanmak gerekmez.
Bu sınıfı her zaman positional_options_description nesnesine positional(...) çağrısı ile geçmek gerekir. Şöyle yaparız.
boost::program_options::options_description desc("options");
...
boost::program_options::positional_options_description p;
...
boost::program_options::variables_map vm;
boost::program_options::store(boost::program_options::command_line_parser(argc, argv).
options(desc).positional(p).run(), vm);
Yanlış KullanımAçıklaması şöyle
Positionals correspond to option descriptions by long name only.Şu kod çalışmaz.
boost::program_options::options_description desc("options");
desc.add_options()
("file", boost::program_options::value<std::string>(&mps_name)->required(),"input file")
(",n", boost::program_options::value<int>(&n)->required(),"number")
("help", "this help message")
;
boost::program_options::positional_options_description p;
p.add("file", 1);
p.add(",n", 1);
Doğrusu şöyledir.boost::program_options::options_description desc("options");
desc.add_options()
("file", boost::program_options::value<std::string>(&mps_name)->required(),"input file")
("n,n", boost::program_options::value<int>(&n)->required(), "number")
("help", "this help message")
;
boost::program_options::positional_options_description p;
p.add("file", 1);
p.add("n", 1);
ConstructorŞöyle yaparız.
po::positional_options_description p;
add metoduŞöyle yaparız. options_description sınıfında kullanılan isim ile positional_options_description.add() metoduna geçilen isim aynı olmalıdır.
options_description desc{"Options"};
desc.add_options()
("help,h", "Help screen")
("ip_port", value<std::string>()->required(), "ip:port");
positional_options_description pos_desc;
pos_desc.add("ip_port", -1);
Şöyle yaparız.desc.add_options()
("bar", po::value(&bar), "bar")
("command", po::value(&command));
po::positional_options_description p;
p.add("command", -1);
Kullanım
Şöyle yaparız.
command_line_parser parser{argc, argv};
parser.options(desc).positional(pos_desc).allow_unregistered();
parsed_options parsed_options = parser.run();
variables_map vm;
store(parsed_options, vm);
notify(vm);
...
Şöyle yaparız.po::options_description desc("Allowed options");
...
po::positional_options_description pos;
...
po::variables_map vm;
try {
po::store(po::command_line_parser(argc, argv).options(desc)
.positional(pos).run(), vm);
po::notify(vm);
} catch(const po::error& e) {
...
}
Hiç yorum yok:
Yorum Gönder