ImageVerifierCode 换一换
格式:DOC , 页数:9 ,大小:49KB ,
资源ID:6211613      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-6211613.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([C++Boost]程序参数项解析库Program_options使用指南.doc)为本站会员(gnk289057)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

[C++Boost]程序参数项解析库Program_options使用指南.doc

1、C+Boost程序参数项解析库Program_options使用指南 介绍程序参数项(program options)是一系列name=value对,program_options 允许程序开发者获得通过命令行(command line)和配置文件(config file)获取这些参数项。为什么需要这样一个库?为什么比你手工写代码分解命令行参数要好? 使用更容易。定义参数处理的语法简单,库自身很小。像转换参数值到指定的类型和保存参数值到变量的事情都是自动处理。 错误报告更友好。可报告错误的命令行参数。另外这个库能自动生成使用帮助,避免手工更新使用帮助导致的不一致。 参数能从不同地方读取。当命令

2、行参数不能满足要求,需要改用配置文件或环境变量。这些功能都能支持,代码改动很小。 使用指南快速入门 使用详解 参数多种来源 在本节,我们从最简单的例子开始,学习program_options库的通常用法。下面的例子仅仅是代码片断,完整例子在“ BOOST_ROOT/libs/program_options/example”目录里。对所有例子,假定都在如下名字空间中: namespace po = boost:program_options;快速入门第一个例子尽可能简单:仅仅包含两个参数项。代码如下(完整代码见“example/first.cpp”):/ Declare the supporte

3、d options.po:options_description desc(“Allowed options“);desc.add_options()(“help“, “produce help message“)(“compression“, po:value(), “set compression level“);po:variables_map vm;po:store(po:parse_command_line(ac, av, desc), vm);po:notify(vm); if (vm.count(“help“) cout default_value(10), “optimizat

4、ion level“)(“include-path,I“, po:value(), “include path“)(“input-file“, po:value(), “input file“);The “-help“ 项和前例一样,在项目中有这个参数项是个好注意。The “optimization“ 项体现两个新特性 . 首先,我们传递变量(p.add(“input-file“, -1);po:variables_map vm;po:store(po:command_line_parser(ac, av).options(desc).positional(p).run(), vm);po:n

5、otify(vm);前两行指出所有的“ 位置参数项 ”应被翻译成“input-file”项。要注意用 command_line_parser 类解析命令行,而不是 parse_command_line 函数。parse_command_line函数是为处理简单情况对command_line_parser类的封装,但现在要传递附加信息就不适用了。现在,所有参数项被描述且被解析。我们暂不实现剩下的编译逻辑,仅仅打印参数项:if (vm.count(“include-path“)cout () () default_value(10), “optimization level“)(“include-

6、path,I“, po:value()-composing(), “include path“);/ Hidden options, will be allowed both on command line and/ in config file, but will not be shown to the user.po:options_description hidden(“Hidden options“);hidden.add_options()(“input-file“, po:value(), “input file“); 注意在“include-path“ 项声明中调用 compos

7、ing 方法,说明从不同来源的值应当被合并在一起,下面很快就会看到。options_description 类的add 方法能被用于进一步组合参数项:po:options_description cmdline_options;cmdline_options.add(generic).add(config).add(hidden);po:options_description config_file_options;config_file_options.add(config).add(hidden);po:options_description visible(“Allowed option

8、s“);visible.add(generic).add(config);除了额外需要调用 parse_config_file 和 store 函数以外,参数值的解析和存储和通常一样。 但是当命令行和配置文件中同样的参数被指定了如何处理?通常,首选第一个被存储的值。 这说明了“-optimization” 项的值如何产生。对“组合(composing)”项,像“include-file”,值被合并在一起。如何编译的例子如下: $bin/gcc/debug/multiple_sourcesInclude paths are: /optOptimization level is 1$bin/gcc

9、/debug/multiple_sources -helpAllows options:Generic options:-v -version : print version string-help : produce help messageConfiguration:-optimization n : optimization level-I -include-path path : include path$bin/gcc/debug/multiple_sources -optimization=4 -I foo a.cpp b.cppInclude paths are: foo /op

10、tInput files are: a.cpp b.cppOptimization level is 4附录为加强理解,这里列出了上面提到的完整源代码。 文件example/first.cpp #include namespace po = boost:program_options;#include #include using namespace std;int main(int ac, char* av)try po:options_description desc(“Allowed options“);desc.add_options()(“help“, “produce help m

11、essage“)(“compression“, po:value(), “set compression level“);po:variables_map vm; po:store(po:parse_command_line(ac, av, desc), vm);po:notify(vm); if (vm.count(“help“) cout default_value(10), “optimization level“)(“include-path,I“, po:value(), “include path“)(“input-file“, po:value(), “input file“);

12、po:positional_options_description p;p.add(“input-file“, -1);po:variables_map vm;po:store(po:command_line_parser(ac, av).options(desc).positional(p).run(), vm);po:notify(vm);if (vm.count(“help“) cout () () default_value(10), “optimization level“)(“include-path,I“, po:value()-composing(), “include pat

13、h“);/ Hidden options, will be allowed both on command line and/ in config file, but will not be shown to the user.po:options_description hidden(“Hidden options“);hidden.add_options()(“input-file“, po:value(), “input file“);po:options_description cmdline_options;cmdline_options.add(generic).add(confi

14、g).add(hidden);po:options_description config_file_options;config_file_options.add(config).add(hidden);po:options_description visible(“Allowed options“);visible.add(generic).add(config);po:positional_options_description p;p.add(“input-file“, -1);po:variables_map vm;store(po:command_line_parser(ac, av).options(cmdline_options).positional(p).run(), vm);ifstream ifs(“multiple_sources.cfg“);store(parse_config_file(ifs, config_file_options), vm);notify(vm);if (vm.count(“help“) cout () () “n“;cout “Optimization level is “ opt “n“; catch(exceptionreturn 1; return 0;

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报