码迷,mamicode.com
首页 > 其他好文 > 详细

操作argc, argv的经典写法

时间:2018-06-04 16:40:23      阅读:120      评论:0      收藏:0      [点我收藏+]

标签:写法   turn   经典   cmd   操作   const   nts   asi   TE   

[问题]

我在看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]

 

操作argc, argv的经典写法

标签:写法   turn   经典   cmd   操作   const   nts   asi   TE   

原文地址:https://www.cnblogs.com/time-is-life/p/9133324.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!