C++可变参数

     这个东西很少用,每次都要到处找,所以这里做个记录。

     可变参数值得是类似c语言里的printf(const char* format, ...)这样的参数,其中...表示参数个数可变。

      宏也同样支持这样使用:


      宏中的用法:#define LOG_OUT(format, ...) printf(format, ##__VA_ARGS__)   其中__VA_ARGS__表示可变参数。

      在程序中,是通过var_start var_end var_arg 来获取...中的参数:

{
    char tmp[1024];
    
    memset(tmp, 0, 1024);
    va_list pArgList;
    va_start(pArgList, format);
    vsnprintf(tmp, 1024, format, pArgList);
    va_end(pArgList);
    
    return std::string(tmp);
}


       如果需要取得每一个参数可以使用var_arg,它需要传入一个va_list的变量和类型。如:如果需要int,可以这样调用

int a = va_arg(pArgList, int);


  1 #include <cstdio>
  2 #include <cstdlib>
  3 #include <cstdarg>
  4 
  5 void logMultiArgsOfInt(int num, ...)
  6 {
  7     va_list list;
  8     va_start(list, num);
  9     for (int i = 0; i < num; ++i) {
 10         int t = va_arg(list, int);
 11         printf("%d\n", t);
 12     }
 13     va_end(list);
 14 }
 15 
 16 int main(int argc, char **argv)
 17 {
 18     logMultiArgsOfInt(5, 1, 2, 3, 4, 5);
 19     return 0;
 20 }
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值