这个方法有几个优点:
1、通过检测vsnprintf的返回值,在buffer不够大的情况下重新分配空间,得到按需分配,不浪费空间
2、thread_local
)1)每个线程都有一个独立的实例,线程安全
)2)初始化(而不是赋值)确保编译器只调用一次初始化
)3)确保静态限定(默认自动添加)相同的线程内复用,不需要多次分配
void__cdecltest(constchar*fmt,) static thread _ local STD 33603360 string buf (1024,0 ); buf.clear (; do {va_list ap; VA_start(AP,fmt ); intret=vsnprintf((char* ) buf.data )、buf.capacity )、fmt和ap ); va_end(AP; ret buf.capacity () (/bufferistoosmallbuf.resize ) ret 16,0; 连续; }break; (while ) 1; STD : coutbufstd : endl; }