一般形式都是 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
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!