最近想找一个跨平台配置文件类。本来ACE下有一个ACE_Configuration_Heap可以用,感觉也不错。不过只是为了读一下配置文件就把整个ACE库链接进来未免有些小题大作,所以重新寻找。boost里有一个Program_options,在Introduction里写的是The program_options library allows program developers to obtain program options, that is (name, value) pairs from the user, via conventional methods such as command line and config file. 感觉应该能用,花了几个小时读了一下。
    结果出乎我的意料,这个库的设计初衷应该是用来处理命令行参数的,处理配置文件可能只是一个衍生物。对命令行参数处理是不错,对配置文件的支持则让人沮丧。别的不说,单是看一看其配置文件的实例 multiple_sources.cfg,唉!连section都没有!

此文件在 BOOST_ROOT\libs\program_options\example\目录下,内容如下:
 #
 # Comment out this line to use hard-coded default value of 10
 #
 optimization = 1
 include-path = /opt

    如果是要处理命令行,这个类是比较好的。除去一些正常的支持外,还支持UNICODE,支持winmain参数等不少功能。但我想要的是一个处理配置文件的类,只得放手了。

    不过这个库有些小技巧感觉还是不错的,下面这段代码如果是C++的初学者可能会很吃惊,因为这个集合加项的语法比较特别,让人感觉清晰明快。
浅尝Boost之Program_optionsnamespace po = boost::program_options;
浅尝Boost之Program_optionspo::options_description generic(
"Generic options");
浅尝Boost之Program_optionsgeneric.add_options()
浅尝Boost之Program_options  (
"version,v""print version string")
浅尝Boost之Program_options  (
"help""produce help message") ;   
   
怎么做到这样的效果?我简化了Program_options.add_options()相关的类和代码,有兴趣的朋友可以看一下。
浅尝Boost之Program_optionsnamespace demo
;

测试代码

浅尝Boost之Program_options    demo::options_description_demo set;
浅尝Boost之Program_options    
set.add_options()
浅尝Boost之Program_options        (
"name""value")
浅尝Boost之Program_options        (
"version""print version string")
浅尝Boost之Program_options        (
"help""produce help message");
浅尝Boost之Program_options    
set.show();

结果:

*/


 

 

相关文章: