代码很简单,就不解释了,直接上代码:
#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; }
将格式化字符串赋给stl::string
时间: 2024-10-06 01:53:34