[问题]

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

 template<class charT>basic_command_line_parser<charT>::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<charT, const charT* const*>(argv+1, argv+argc+!argc))),m_desc(){}

不明白里面的
argv+argc+!argc
是干什么用的, 请高手指教,谢谢

附上to_internal函数:

template<class T>
std::vector<std::string> to_internal(const std::vector<T>& s)
{std::vector<std::string> 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]

转载于:https://www.cnblogs.com/time-is-life/p/9133324.html

操作argc, argv的经典写法相关推荐

  1. glutInit(argc, argv); glut初始化API

    int main(int argc, char **argv){} int argc 和 char **argv 传递 到 你的自定义函数,再传递给 glutInit(). ------------- ...

  2. CMake中的ARGC ARGV 和ARGN参数意义

    编写或者查看一些开源cmake文件中经常遇到在宏(macro)和函数中经常会遇到ARGC ARGV 和ARGN等参数,该参数为cmake中专用变量,分别表示宏或者函数参数中的特殊意义. ARGC AR ...

  3. php ci sql性能时间,Codeigniter操作数据库表的优化写法总结

    用codeigniter也有一段时间了,一直没有做什么总结.现在总结一些Codeigniter操作数据库表的优化写法,虽说不全,但是也确实可以帮助那些刚刚上手CI的同学. 链接数据库 复制代码 代码如 ...

  4. SurfaceView的经典写法

    SurfaceView的经典写法 package com.example.test;import android.content.Context; import android.graphics.Ca ...

  5. argc, argv 到底是干啥用的?

    文章目录 前言 分析 初探类型 文件IO 多个文件IO 自定义格式 总结 前言 在旧版本的IDE中新建一个C/C++源文件,你可能会看到这种样子的main函数 int main(int argc,ch ...

  6. argc,**argv

    main函数的参数argc,argv用于 取得命令行参数 int main(int argc,char **argv) 或 int main(int argc, char *argv[]) argc是 ...

  7. 关于C++中的argc,argv的使用方法

    想必很多人都好奇C++中的int argc 和 char **argv .那我们今天来看看argc,argv的使用方法 1,int argc argc 实际上指命令行接受的参数个数, 比如说,这个程序 ...

  8. main函数的参数-argc,argv介绍

    在main函数的定义形式中,会涉及到argc,argv以及envp参数(参考上一篇:C程序main函数https://blog.csdn.net/m0_52892985/article/details ...

  9. c语言中命令行参数argc,argv[]详解

    argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0 ...

最新文章

  1. Discuz X2下tag伪静态详细设置方法
  2. 实现主成分分析和白化
  3. html action不起作用,Html.ActionLink做为按钮或图像,而不是连接
  4. IBASE and ES change pointer
  5. gwt-2.8.2下载_GWT EJB3 Maven JBoss 5.1集成教程
  6. [ZJOI2005]午餐
  7. Android开发中如何调用摄像头的功能
  8. 黑苹果声卡、显卡、网卡驱动教程
  9. CodeMirror实现代码对比功能
  10. 解决weka打开不了package manner的方法!
  11. macOS:删除 MDM 配置描述文件
  12. springboot easypoi excel导出功能
  13. 2020研究洞察:新消费品牌的8大增长驱动力
  14. 苹果电池显示维修_苹果财大气粗:维修换电池?直接给你换个机
  15. N阶幻方入门算法及图解
  16. 查看phpinfo方法
  17. python技巧 黑魔法指南笔记
  18. CSS和JS实现内容折叠/展开效果
  19. CH9344 Windows驱动安装与GPIO使用教程
  20. 报告显示,36%“铅衣侠”工作强度超996上班族

热门文章

  1. mysql 删除 修改密码_MySQL新建用户,授权,删除用户,修改密码
  2. 蓝桥杯 ALGO-139 算法训练 s01串
  3. 蓝桥杯 BASIC-4 基础练习 数列特征
  4. 联合索引会创建几个索引_联合索引在B+Tree上的存储结构及数据查找方式
  5. Jenkins服务器磁盘空间爆满问题解决
  6. java.sql.SQLException: Io 异常: The Network Adapter could not establish the connection 解决
  7. Docker-CE 入门
  8. 软考网络工程师--知识产权与标准化
  9. javascript变量作用域一点总结
  10. 循环中的continue功能