代码非常easy,不解释,直接在代码:
#include <cstdio> #include <cstdarg> #include <iostream> using namespace std; //功能:将格式化字符串赋给stl::string //參数:和printf的參数一样 //返回值:返回格式化后的string类 string StringFormat(const char *format, ...) { string result; //将字符串的长度初始化为1024 int tlen = 1024; int len = 0; result.resize(tlen); //为string赋值 va_list list; va_start(list, format); len = vsnprintf((char*)result.c_str(), tlen, format, list); //假设结果字符串长度比初始长度长,就又一次设置字符串长度。然后再赋值 if( len >= tlen ) { tlen = len + 1; result.resize(tlen); len = vsnprintf((char*)result.c_str(), tlen, format, list); } va_end(list); //删除字符串尾部的0字符 result.erase(len); return result; } //測试样例 int main() { string str = StringFormat("Hello, world: %d, %lf %s", 435, 5462.56/54, "man"); cout << str << endl; return 0; }
版权声明:本文博客原创文章。博客,未经同意,不得转载。