• 操作argc, argv的经典写法


    [问题]

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

  • 相关阅读:
    从无到有构建vue实战项目(二)
    从无到有构建vue实战项目(一)
    windows下nginx的安装和使用
    系统全局环境变量设置
    100个常用的linux命令
    Linux常用系统信息查看命令
    linux下搜索find命令拾遗
    linux基础优化
    linux系统基础文件属性
    正则awk和查看文件行数
  • 原文地址:https://www.cnblogs.com/time-is-life/p/9133324.html
Copyright © 2020-2023  润新知