Giriş
Şu satırı dahil ederiz.
Komut Satırı
Parametre almayan seçenek için şöyle yaparız.
Bir string vererek şöyle yaparız.
Şöyle yaparız.
operator << metodu
Eğer istenirse bu sınıf string'e çevrilebilir. Şöyle yaparız
Bound value kullanmak için şöyle yaparız. Bir struct tanımlarız.
Şu satırı dahil ederiz.
#include <boost/program_options.hpp>
Kolay kullanım için şu satırı dahil ederiz.namespace po = boost::program_options;
Bu sınıf parametre olarak verilen string'leri kopyalar. İçin şöyledir.std::string m_short_name, m_long_name, m_description;
// shared_ptr is needed to simplify memory management in
// copy ctor and destructor.
shared_ptr<const value_semantic> m_value_semantic;
Komut Satırı
Parametre almayan seçenek için şöyle yaparız.
po::options_description desc("Allowed options");
desc.add_options()
("compression", po::value<int>(), "set compression level")
;
Bu durumda komut satırından şöyle kullanırız. -- karekterlerinden sonra seçenek ismi, sonra boşluk ve sonra parametre değeri./main --compression 1
Şöyle de yapılabilir../main --compression="1"
ConstructorBir string vererek şöyle yaparız.
po::options_description desc ("Options");
Şöyle de yapılabilir.options_description desc {"Program usage"};
Şöyle de yapılabilir.po::options_description desc ("Allowed options");
add metodu - options_descriptionŞöyle yaparız.
po::options_description generic = ...;
po::options_description visible = ...;
visible.add (generic
);
Şöyle yaparız.
Bir options_description_easy_init nesnesi yaratır. operator() metodunun kolay kullanılabilmesini sağlar. po::options_description desc("Allowed options");
...
// Hide the `files` options in a separate description
po::options_description desc_hidden("Hidden options");
...
// This description is used for parsing and validation
po::options_description cmdline_options;
cmdline_options.add (desc).add(desc_hidden);
// And this one to display help
po::options_description visible_options;
visible_options.add (desc);
add_options metoduoperator << metodu
Eğer istenirse bu sınıf string'e çevrilebilir. Şöyle yaparız
po::variables_map options;
po::options_description optionsDesc;
//...
if(options.count("help"))
{
cerr << optionsDesc << endl;
}
Yardımcı Sınıf
Bound value kullanmak için şöyle yaparız. Bir struct tanımlarız.
struct Options {
std::string input, output, directory;
int points;
};
Bunu bir metoda geçeriz.Options cmdoptions1;
bool result = process_command_line(argc, argv, cmdoptions1);
Metodun içi şöyledir.bool process_command_line(int argc, char **argv, Options &opt) {
if (argv == nullptr) {
return false;
}
try {
po::options_description desc("Program Usage");
desc.add_options()
("halp, h", "Halp!")
("input, i", po::value<std::string>(&opt.input), "Specify Input")
("output, o", po::value<std::string>(&opt.output) ,"Specify Output")
("points, p", po::value<int>(&opt.points), "% of reduced points")
("directory, d", po::value<std::string>(&opt.directory)->required(), "set");
po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
if (vm.count("help")) {
std::cout << desc << std::endl;
return false;
}
} catch (std::exception &e) {
std::cerr << "Error: " << e.what() << std::endl;
return false;
} catch (int e) {
std::cerr << "Unknown error!" << e << std::endl;
return false;
}
return true;
}
Hiç yorum yok:
Yorum Gönder