将变参格式化到一个string对象中
来源:互联网 发布:保密检查清除软件 编辑:程序博客网 时间:2024/06/07 08:39
该小程序的功能是,仿照sprintf,将变参内容保存到string中。它演示了变参的用法。
/*功能说明:仿照sprintf,将字符串格式化到一个string对象中。实现方式:该例子主要是用来演示变参的用法。使用变参的时候,需要头文件stdarg.h,其使用方式为:va_start(),vsprintf(),va_end()按照顺序的结合。程序调用vsprintf将变参格式化到该临时字符数组中,然后再将此临时字符数组中的数据复制到string对象中。限制条件或者存在的问题:程序在内存的堆中创建了一个临时字符数组,该字符数组的长度为2048个字节。*/#include <iostream>#include <string>#include <cstring>#include <cstdarg>using namespace std;// 仿照sprintf,将字符串格式化到string中。void formatString(string & s, const char *format, ...){size_t strMaxLen = 2048;char * tmp = new char[strMaxLen];memset(tmp, 0x00, strMaxLen);//为string赋值va_list list;va_start(list, format);//size_t len = vsnprintf(tmp, strMaxLen, format, list);size_t len = vsprintf(tmp, format, list);if (len >= strMaxLen){tmp[strMaxLen - 1] = '\0';}va_end(list);s = tmp;delete[] tmp;}// 仿照sprintf,将字符串追加到string中。void appendString(string & s, const char *format, ...){size_t strMaxLen = 2048;char * tmp = new char[strMaxLen];memset(tmp, 0x00, strMaxLen);//为string赋值va_list list;va_start(list, format);//size_t len = vsnprintf(tmp, strMaxLen, format, list);size_t len = vsprintf(tmp, format, list);if (len >= strMaxLen){tmp[strMaxLen - 1] = '\0';}va_end(list);s.append(tmp);delete[] tmp;}int main(int argc, char **argv){cout << "process begin at " << (void*)&main << endl;string str;cout << "strlen is " << str.length() << endl;formatString(str, "Hello, world: %d, %lf %s", 435, 5462.56 / 54, "man");cout <<"after format:" <<str << endl;appendString(str, "|Hello, world: %d, %lf %s", 435, 5462.56 / 54, "man");cout <<"after append:"<< str << endl;return 0;}
输出的结果为:
process begin at 01251541
strlen is 0
after format:Hello, world: 435, 101.158519 man
after append:Hello, world: 435, 101.158519 man|Hello, world: 435, 101.158519 man
0 0
- 将变参格式化到一个string对象中
- java中String对象是一个引用对象
- java中正则匹配结果到一个String数组中
- 如何从文件中读取字符串到string对象
- Java中利用MessageFormat对象实现类似C# string.Format方法格式化
- 内核格式化(将格式化信息写入string对象)788
- 在string.xml文件中定义一个字符串,然后在代码中通过String.format方法来格式化该字符串
- 把一个Js功能块封装到一个JS对象中
- 读取一个文件中的内容到String中
- android将一个String保存到.txt文本中
- 编一个程序,从 string 对象中去掉标点符号。要求输入到程序的字符串必须含有标点符号,输出结果则是去掉标点符号后的 string 对象。
- C++怎么把整型、浮点型、字符串格式化输出到一个字符串中
- js中String对象
- js中String对象
- stl中string格式化的方法
- android string.xml 中格式化字符
- Java中String.format格式化字符串用法
- 格式化一个整型变量到CString
- 指数分布族
- C++头文件
- 初级排序算法实现
- 网上找到的天气接口
- 如何编译生成dll
- 将变参格式化到一个string对象中
- 队列的链式实现
- Web api 简要处理流程
- Angular 2 中的数据绑定
- 头文件模板
- 从程序的运行看硬盘、内存、CPU的关系
- 君が呼ぶ、メギドの丘で スキルライン
- pycharm 2017最新注册码
- java语言基础(7)——数据类型、变量的定义和使用