C++ 实现可变参数

一般形式都是 type func(char * formatstr,...);

然后通过已有的参数 formatsrr 来推出,后面的参数。

这样写起来的话,就要匹配所有的基本类型,C++提供了3个宏和算法可以简单处理。

这样,通过vsprintf_s就格式化到buf中。

#include <iostream>
#include <stdarg.h>

void print(char * formatstr,...)  
{  
    char buf[1024] = {0};  

    va_list argptr;  
    va_start(argptr, formatstr);  
    vsprintf_s(buf,sizeof(buf),formatstr,argptr);
    std::cout<< buf << "strlen(buf) = " << strlen(buf) << std::endl;
    va_end(argptr);
}  

int main(){

    print("i=%c+%d\n",65,20);
    system("pause");
}

原文链接: https://www.cnblogs.com/cycxtz/p/4832472.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/222189

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月13日 上午11:38
下一篇 2023年2月13日 上午11:38

相关推荐