vsnprintf长度
来源:互联网 发布:域名和域名空间 编辑:程序博客网 时间:2024/05/22 07:51
由于vsnprintf需要预先分派长度,所以并不能准确判断到底需要多长,这里通过首次分派1024来判断,若不够,后续继续分派,可得到格式化后的buffer和长度
//Handle buffer length of vsnprintf#include <stdio.h>#include <stdarg.h>#include <iostream>#include <tr1/memory>typedef std::tr1::shared_ptr<std::string> StringPtr;StringPtr format(const char* fmt, ...){ va_list ap; va_start(ap, fmt); StringPtr pbuf(new std::string(1024, '\0')); int ret; while ((ret = vsnprintf((char*)pbuf->c_str(), pbuf->size(), fmt, ap)) >= pbuf->size()) { pbuf->resize(pbuf->size() * 2); va_start(ap, fmt); } pbuf->resize(ret); va_end(ap); return pbuf;}int main(){ StringPtr p = format("%d123456789%s", 0, "^**********************************************$"); std::cout<<p->size()<<" "<<*p<<std::endl;}
0 0
- vsnprintf长度
- vsprintf 与 vsnprintf
- sprintf,snprintf,vsprintf,vsnprintf
- va_list和vsnprintf
- va_list和vsnprintf
- va_list和vsnprintf
- vsnprintf函数用法
- vsprintf and vsnprintf
- va_list和vsnprintf
- snprintf vsnprintf的用法
- vsnprintf 打印变长参数
- vsnprintf和snprintf
- va_start(),va_end(),vsnprintf()函数
- vsnprintf和snprintf
- va_list和vsnprintf、getopt
- vsnprintf和snprintf
- vsnprintf和snprintf
- vsnprintf用法解析
- ORACLE存储过程的创建(1)
- Git常用命令速查05 - 分支与标签
- UIControl 使用
- WebView与JavaScipt的交互
- android 网络连接了wifi,但是并没有网络;或者手机联网了 ,APP检测显示未联网
- vsnprintf长度
- Android Handler 和 Timer
- DirectShow&DirectSound采集音频视频数据 vs2013
- Javascript编程风格
- ZOJ 3903 数学
- Ways of Finding element on android with Appium
- 方法(函数)扩展知识
- QTP写文本到txt文件的Sub过程Sub TestResultLog
- 【详解】Python从数据库提取数据写入txt