博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
操作argc, argv的经典写法
阅读量:6264 次
发布时间:2019-06-22

本文共 1055 字,大约阅读时间需要 3 分钟。

[问题]

我在看boost源代码的时候看到如下的代码,

 

template
basic_command_line_parser
:: basic_command_line_parser(int argc, const charT* const argv[]) : detail::cmdline( // Explicit template arguments are required by gcc 3.3.1 // (at least mingw version), and do no harm on other compilers. to_internal(detail::make_vector
(argv+1, argv+argc+!argc))), m_desc() {}

 

不明白里面的

argv+argc+!argc
是干什么用的, 请高手指教,谢谢
附上to_internal函数:

template
std::vector
to_internal(const std::vector
& s){ std::vector
result; for (unsigned i = 0; i < s.size(); ++i) result.push_back(to_internal(s[i])); return result;}

 

[答案]

一般而言,argc表示参数个数,argv表示参数数组,argv[0]表示程序自己的名称

如 运行程序名为z1.exe 带参数 为字符串,将字符串转为大写输出 
命令行输入  z1  AbcD9
这里argc =2, argv[0]="z1" ,argv[1]="AbcD9"
!argc表示逻辑关系
如果argc=0  !argc=1   
argc=0 !argc=1
argv+argc+!argc表示命令行的最后,如argc=2,则将指针移到argc[2];如果argc=0,指针移到argv[1]。
相当于char str[5];中的str[5]

 

转载地址:http://fndpa.baihongyu.com/

你可能感兴趣的文章
oss php sdk+laravel搭建图片处理静态网站
查看>>
深入理解Tomcat系列之二:源码调试环境搭建(转)
查看>>
thinkphp学习笔记6—url模式
查看>>
像npm一样在Andriod项目中引入Gradle依赖
查看>>
智慧城市建设掀起热潮 潜在市场规模高达20万亿
查看>>
【SSH系列】hibernate映射 -- 一对一双向关联映射
查看>>
windows添加snmpd
查看>>
2017MMC智慧出行体验周 Mobile & Mobility Connectivity 2017
查看>>
那年不“匆匆”---我的2014年总结
查看>>
如何搭建企业的「大数据视野」? 五个步骤帮你搞定
查看>>
CentOS 7 systemd的坑
查看>>
阿里云 CDN HTTPS 最佳实践——动态密钥套件
查看>>
Converting Between YUV and RGB
查看>>
浅谈大数据:如何成为大数据企业?
查看>>
多国语言字符串的加密、全文检索、模糊查询的支持
查看>>
大数据中心在医院的落地,需如何去做集成融合与利用
查看>>
新金融时代,区域性银行、本地大银行怎样成为大而强的银行?
查看>>
UIViewController/ApplicationSequ…
查看>>
五个可以避免的BYOD错误
查看>>
黑客披露多款DSL调制解调器存后门
查看>>