boost programı seçenekleri için yapılandırma dosyası yazdırmak için bir yolu yoktur.Bir yapılandırma dosyasından parametreleri almak için boost :: program_options kullanıyorum
i elle bir dosya oluşturabilir ve program seçenekleri ayrıştırmak anlıyorum. ancak programın dosyayı otomatik olarak oluşturması için bir yol arıyorum. seçeneğin adını yazdırmak anlamına gelir ve değeridir. örneğin:
>./main init.cfg
: o zaman ben metin düzenleyicisi kullanarak değerlerini değiştirmek o dosyaya gidin ve bu dosyayı kullanmak bu
[wave packet]
width = 1
position = 2.0
[calculation parameters]
levels = 15
benziyor init.cfg üretecek seçeneğinin olmadığı
>./main
operator<<
olması variables_map sahip olacak bu yaklaşım için güzel bir yol. bu şekilde sadece dosyaya yazabilirim. değerleri değiştir. dosyayı oku. hepsi aynı formatta ve her satırı yazmanıza gerek yok.
i belgelerinde veya örneklerde böyle bir şey bulamadık. Bu
DÜZENLEME mümkün olup olmadığını bana bildirin lütfen: Sam Miller bölümlerde ini dosyasını ayrıştırmak için nasıl gösterdi. Ancak, hala boost :: program_options :: variables_map vm değerlerini almakta sorun yaşıyorum. i yerine it->second.value()
aşağıdaki
for(po::variables_map::iterator it = vm.begin(); it != vm.end(); ++it)
{
if(it->first!="help"&&it->first!="config")
cout << "first - " << it->first << ", second - " << it->second.value() << "\n";
}
çalıştı bir hata var. Ayrıca it->second
'u denedim. Ben de bir hata var:
icpc -lboost_serialization -lboost_program_options -c programOptions.cc
programOptions.cc(60): error: no operator "<<" matches these operands
operand types are: std::basic_ostream<char, std::char_traits<char>> << boost::any
cout << "first - " << it->first << ", second - " << it->second.value() << "\n";
^
compilation aborted for programOptions.cc (code 2)
make: *** [programOptions.o] Error 2
i int'leri benim değerlerinin it->second.as<int>()
ancak kullanamayacaklarınız eğer ben doğru değeri elde ve ben çift ulaştıktan sonra, program bu çöküyor:
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::bad_any_cast> >'
what(): boost::bad_any_cast: failed conversion using boost::any_cast
Kısa bir örnek yazabilmenin herhangi bir yolu var mı? ya da bir yol haritası nasıl yapılır? –
@kirill_igum Bir örnek ekledim. –