vsnprintf长度
由于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;
}
vsnprintf长度相关推荐
- stetho 调试数据库_stetho是适用于android应用程序的最佳调试工具
stetho 调试数据库 As Android developers, our development life often involves integrating API or web servi ...
- vsnprintf的作用和使用
vsnprintf用来将可变参数格式化输出到一个字符数组,常和va_start和va_end一起使用. vsnprintf函数介绍 函数功能:将可变参数格式化输出到一个字符数组. 注意: 在lin ...
- 各种输出函数的比较(printf/fprintf/sprintf/snprintf/vprintf/vfprintf/vsprintf/vsnprintf)
对于程序猿来说,printf函数可以说是最熟悉的一个工具了.利用它可以将各类调试信息输出到指定的设备(比如串口)中,实现对程序运行状态的掌控和分析.不过,在实际的应用中,相信大家除了printf函数之 ...
- C/C++vsnprintf用法(要配合va_list使用)
_vsnprintf是C语言库函数之一,属于可变参数.用于向字符串中打印数据.数据格式用户自定义.头文件是#include <stdarg.h>. 参数说明: char *str [out ...
- C++ Reference: Standard C++ Library reference: C Library: cstdio: vsnprintf
C++官网参考链接:https://cplusplus.com/reference/cstdio/vsnprintf/ 函数 <cstdio> vsnprintf int vsnprin ...
- sprintf、vsprintf、sprintf_s、vsprintf_s、_snprintf、_vsnprintf、snprintf、vsnprintf 函数辨析
看了题目中的几个函数名是不是有点头晕?为了防止以后总在这样的细节里纠缠不清,今天我们就来好好地辨析一下这几个函数的异同. 实验环境: Windows下使用VS2017 Linux下使用gcc4.9.4 ...
- 如何使用vsprintf, vsnprintf等函数
前言 在一些c++的框架中,有很多小的util函数,通常每个框架里都会有一个log函数,用法类似于printf(fmt, ...), 比如cocos2d-x的log函数用法大概像下面这样: log(& ...
- va_start,vsnprintf,va_end日记内存溢出解决!!!
vsprintf有三个参数.一个用於保存结果的字元缓冲区和一个格式字串.第三个参数是指向格式化参数阵列的指标. vsprintf(buffer,format,argptr); format:格式字符串 ...
- vsnprintf用法解析
int vsnprintf (char * s, size_t n, const char * format, va_list arg ); 描述: 将格式化数据从可变参数列表写入大小缓冲区 如果在p ...
最新文章
- java 整合solr_SpringBoot整合Spring Data Solr
- 整合quickx到普通cocos2dx
- EleemntUI中el-table的formatter格式化字典显示的使用
- rocketmq安装,内存配置,各种命令说明,windows下安装,控制台工具
- ubtuntu server下的包管理
- 如何取消 登录_LSAT | 退考、缺考、取消成绩,各自的区别和流程是怎样的?
- leetcode10. 正则表达式匹配 一道没有解释的字符串dp困难题
- Android学习之网上商城(下)
- 【TensorFlow】TensorFlow函数精讲之 tf.nn.relu()
- Android自定义View控件
- 格局再变?AWS CDN 落地中国
- Android Spinner 设置setOnItemSelectedListener时,竟会默认触发一次事件!
- 医学遗传学词汇英语术语英文(Glossary) 5
- 湖南工大c语言上机题库,湖南科技大学2010年C语言上机题库
- Java Web开发学习手册_Java Web实战开发完全学习手册
- AI_Drug: 分子生成模型之VAE(一)
- 全网搜索一个人的痕迹,爬取百度搜索结果
- 米狗族 Android平台Qt开发入门教程
- 成功解决WebMediaCfg.ini文件被清空引起的“没有找到数据库”
- 1bit和1byte_带宽单位是位(bit)网速单位是字节(Byte)1字节等于8位
热门文章
- window服务器nginx无法启动
- 华为云存储All-Flash战略:成就不凡的微秒时代
- 学系统集成项目管理工程师(中项)系列28_后记
- skew算法_一种基于FPGA的多通道高速输入信号自动de‑skew算法的制作方法
- 【人工智能】基于蒙特卡洛树搜索和策略价值网络的AI五子棋算法设计
- C++ 算法 高精度(较详细.)
- 蓝牙模块的天线类型有哪些,屏蔽罩是否需要?
- xunsearch php,xunsearch
- ssm注销用户的方法
- java 微信 qq 登录_java实现 微博登录、微信登录、qq登录实现代码