Giriş
Şu satırı dahil ederiz.
Örnek
Şu satırı dahil ederiz.
#include <boost/program_options.hpp>
Daha kolay kullanmak için şöyle yaparız. Bu kütüphane ile json parse etmek mümkün değil
namespace po = boost::program_options;
Kullanım
1. options_description nesnesi ile seçenekler doldurulur
2. command_line_parser nesnesi çalıştırılır ve parsed_options nesnesi elde edilir.
3. Anlaşılmayan seçenekler collect_unrecognized() çağrısı ile elde edilir.
4. Seçenekerl store() ve notify() çağrıları ile variables_map nesnesine doldurulur
5. variables_map nesnesine kullanılarak seçeneklere erişilir.
Şöyle yaparız
#include <boost/program_options.hpp>namespace po = boost::program_options;int main(int argc, char **argv) {// Declare the supported options.po::options_description desc("Allowed options");desc.add_options()("help,h", "produce help message")("parents,p", po::bool_switch(), "make parent directories as needed")("verbose,v", po::bool_switch(), "print a message for each created directory");const po::parsed_options parsed = po::command_line_parser(argc, argv).options(desc).allow_unregistered().run();const std::vector<std::string> unrecognized =collect_unrecognized(parsed.options, po::include_positional);po::variables_map vm;po::store(parsed, vm);po::notify(vm);if (vm.count("help") || argc <= 1) {std::cout << desc;return 1;}for (const auto &opt : unrecognized) {...}
options_description Sınıfı
options_description Sınıfı yazısına taşıdım.
Custom Validator
Custom Validator yazısına taşıdım.
positional_options_description Sınıfı
positional_options_description Sınıfı yazısına taşıdım.
variables_map Sınıfı
variables_map Sınıfı yazısına taşıdım.
command_line_parser Sınıfı
command_line_parser Sınıfı yazısına taşıdım.
parsed_options Sınıfı
options_description Sınıfı yazısına taşıdım.
Custom Validator
Custom Validator yazısına taşıdım.
positional_options_description Sınıfı
positional_options_description Sınıfı yazısına taşıdım.
variables_map Sınıfı
variables_map Sınıfı yazısına taşıdım.
command_line_parser Sınıfı
command_line_parser Sınıfı yazısına taşıdım.
parsed_options Sınıfı
Bu sınıf parse işleminin sonucunu saklar.
Constructor
Şöyle yaparız.
Bu metod ile verilen komut satırı parse edilerek variables_map sınıfına doldurulur. Şöyle yaparız.
config_file_iterator Sınıfı yazısına taşıdım.
notify metodu
notify metodu yazısına taşıdım.
collect_unrecognized metodu
Şöyle yaparız.
Constructor
Şöyle yaparız.
po::parsed_options parsed =
po::command_line_parser(argc, argv).options(desc).allow_unregistered().run();
store metoduBu metod ile verilen komut satırı parse edilerek variables_map sınıfına doldurulur. Şöyle yaparız.
po::variables_map vm;
po::parsed_options parsed = ...;
po::store (parsed, vm);
Genellikle parsed_options nesnesi es geçilerek direkt parse_command_line çağrısının sonucu kullanılır. Şöyle yaparız.//command line arguments
variables_map vm;
options_description desc = ...;
...
store (parse_command_line (argc, argv, desc), vm);
notify(vm);
config_file_iterator Sınıfıconfig_file_iterator Sınıfı yazısına taşıdım.
notify metodu
notify metodu yazısına taşıdım.
collect_unrecognized metodu
Şöyle yaparız.
po::parsed_options parsed = ...;
auto command = po::collect_unrecognized(parsed.options, po::include_positional);
std::cout << "bar: " << bar << ", command:";
for (const auto& c : command) std::cout << " " << c;
std::cout << " " << c
Hiç yorum yok:
Yorum Gönder