Giriş
Parse edilen value_semantic nesnesinin bir değişkene bağlanmasını istersek kullanırız. Bağlamak için po::value() metodu kullanılır.
operator () metodu - seçenek + bound value
Örnek
Şöyle yaparız.
Değişkenin tipini vermeden şöyle yaparız.
Parse edilen value_semantic nesnesinin bir değişkene bağlanmasını istersek kullanırız. Bağlamak için po::value() metodu kullanılır.
operator () metodu - seçenek + bound value
Örnek
Şöyle yaparız.desc.add_options()
("address", po::value<std::string>(&address))
("port", po::value<unsigned int>(&port))
;
Şöyle yaparız.
desc.add_options()
("abc", po::wvalue<std::wstring>()->required(), "Path to abc.txt")
("ini", po::wvalue<std::wstring>(), "INI file path.");
Kullanmak için şöyle yaparız.po::variables_map vm;
po::store(po::parse_command_line(argc, argv, desc), vm);
po::notify(vm);
if (vm.count("ini"))
{
wifstream ifs(vm["ini"].as<std::wstring>(););
if (ifs)
{
...
}
}
operator () metodu - seçenek + bound value + açıklamaDeğişkenin tipini vermeden şöyle yaparız.
int bar = 0;
desc.add_options()
("bar", po::value(&bar), "bar");
Değişkenin tipini vermeden std::array için şöyle yaparız.std::array<double,3> arr;
...
("arr,a", po::value(&arr), "array test");
Stream'den okumak için metodları tanımlamamız gerekir.namespace std {
template <typename T, size_t N>
istream& operator>>(istream& in, array<T,N>& arr) {
...
return in;
}
}
Şöyle çağırırız../test '1:5:9'
operator () metodu - seçenek + bound value + default value + açıklama
Tüm debug için verilen seçenekleri yakalamak için şöyle yaparız.
Şöyle yaparız.
Tüm debug için verilen seçenekleri yakalamak için şöyle yaparız.
typedef std::vector<unsigned> DebugValues;
DebugValues debug;
...
("debug", po::value<DebugValues>(&debug)->
default_value(boost::assign::list_of(0), "0")->
composing(), "set debug level")
Şöyle yaparız.$ ./a.out --debug 1 --debug 2 //1 ve 2
...
$ ./a.out --debug 4 --debug 1 //1 ve 4
...
$ ./a.out --debug 4 --debug 1 --debug 9 //4 , 1, 9
...
Custom TypeŞöyle yaparız.
struct bytesize_option
{
...
};
std::ostream& operator<<(std::ostream& os, bytesize_option const& hs);
std::istream& operator>>(std::istream& is, bytesize_option& hs);
namespace {
static constexpr auto G = std::size_t(1024 * 1024 * 1024);
static constexpr auto M = std::size_t(1024 * 1024);
static constexpr auto K = std::size_t(1024);
}
std::ostream& operator<<(std::ostream& os, bytesize_option const& hs)
{
...
}
std::istream& operator>>(std::istream& is, bytesize_option& hs)
{
...
}
Kendi tipimizden bir değişken tanımlarız.bytesize_option _max_hdr_size;
Şöyle yaparız.new po::option_description("server.max-header-size,x",
po::value(&_max_hdr_size)
->default_value(_max_hdr_size),
"The maximum size (in bytes)")
Hiç yorum yok:
Yorum Gönder