C++ 中的不定参数与格式化字符串 # ## vsprintf
日志打印或者格式字符串时,可能会用到不定参数的使用,这里记录一下。
格式化字符串有很多方法:
- snprintf
- std::stringstream
- # ##的使用
##是一个连接符号,用于把参数连在一起
#是“字符串化”的意思,出现在宏定义中的#是把跟在后面的参数转换成一个字符串
并且# ##都只能出现在宏定义中
include <stdio.h>
#define test(n) printf("arg" #n " = %d\n", arg##n)
int main(){
int arg9 = 5;
test(9); //arg9 = 5
return 0;
}
- 有时候需要自己调用vsprintf
#include <stdio.h>
#include <stdarg.h>
#include <string>
void format_args(std::string &res, const char* format, ...){
char buffer[256];
va_list args;
va_start(args, format);
//使用vsnprintf避免buff不足, 出core
vsnprintf(buffer, sizeof(buffer), format, args);
va_end(args);
res = buffer;
}
int main(){
int arg1 = 5;
std::string arg2 = "OK";
std::string res;
format_args(res, "res is arg1 = %d, arg2 = %s", arg1, arg2.c_str());
puts(res.c_str());
return 0;
}
写博客发现个markdown的用法, 对标题符合#转: \#
C++ 中的不定参数与格式化字符串 # ## vsprintf的更多相关文章
- C和C++中的不定参数
在初学C的时候,我们都会用到printf函数来写Hello World的程序.在我们看printf函数的声明时,会看到类似于下面代码 int printf(const char * __restric ...
- Python中使用%还是format来格式化字符串?
Python中应该使用%还是format来格式化字符串? %还是format Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了form ...
- JAVA中String.format的用法 格式化字符串,格式化数字,日期时间格式化,
1.对整数进行格式化:%[index$][标识][最小宽度]转换方式 我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解, ...
- .NET中DateTime.Now.ToString的格式化字符串
.NET中DateTime.Now.ToString显示毫秒:DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") DateTime.N ...
- Objective-C中使用不定参数个数的方法调用
Objective-C中,定义并使用带有不定参数个数的对象方法与C函数类似,规则上也要求不定参数列表中必须至少要有一个形参,然后参数列表的最后跟省略号表示不定参数.省略号不能放在参数当中部分,只能放在 ...
- subprocess中命令为参数序列和字符串的区别
参数args 参数args可以是一个参数序列,也可以是一个单独的字符串.参数序列通常是首选的,因为它允许模块处理参数的转义和引号(例如,允许文件名中有空格). 如果传递参数序列,默认情况下,程序执行序 ...
- c(++)可变参数之格式化字符串
0.序言 使用printf函数,其参数就是可变参数.下面将使用 C语言 的库函数实现可变参数的函数 . 用途(欢迎补充): A.记录日志,可能需要将变量格式化输出到日志文件. B.格式化字符串,显示 ...
- 在sql语句中使用 xml for path 格式化字符串的方法总结
此方法实现的是将查询表中的某个字段,格式化成 字符串1,字符串2,字符串3...的格式 假设我们现在有两个表 分别是 分组表 grouped和分组成员表 groupuser grouped表有连个字 ...
- python 常见包中的不定参数
随机推荐
- 用easy-ui中的表单操作实现一行操作和多行操作
http://blog.sina.com.cn/s/blog_8e50ede90101fff9.html
- Mysql 查询实现成绩排名
Mysql 查询实现成绩排名,相同分数名次相同,类似于rank()函数 近日系统要实现总分成绩排名,而且相同分数的学生排名要一样,在网上搜了一圈,没有找到合适的方法,只能靠自己实现了,这里提供两种方法 ...
- scrapy选择器归纳
python 爬虫: srcrapy框架xpath和css选择器语法 Xpath基本语法 一.常用的路径表达式: 表达式 描述 实例 nodename 选取nodename节点的所有子节点 //div ...
- idea工具maven生命周期clean,install,package等区别
idea工具maven projects里面有9种生命周期,生命周期是包含在一个项目构建中的一系列有序的阶段. 一.最常用的两种打包方法: 1.clean,package(如果报错,很可能就是jar依 ...
- TF之AE:AE实现TF自带数据集AE的encoder之后decoder之前的非监督学习分类—Jason niu
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt #Import MNIST data from t ...
- TF:Tensorflow定义变量+常量,实现输出计数功能—Jason niu
#TF:Tensorflow定义变量+常量,实现输出计数功能 import tensorflow as tf state = tf.Variable(0, name='Parameter_name_c ...
- Jenkins环境搭建(2)-搭建jmeter+ant+jenkins自动化测试环境
一直想在持续集成方向学习并研究一番,近期正准备结合jmeter+ant+jenkins做自动化接口测试,在学习的同时,正好实践一番,毕竟实践才是真理. 在搭建jmeter+ant+jenkins环境有 ...
- #6164. 「美团 CodeM 初赛 Round A」数列互质-莫队
#6164. 「美团 CodeM 初赛 Round A」数列互质 思路 : 对这个题来言,莫队可以 n*根号n 离线处理出各个数出现个的次数 ,同时可以得到每个次数出现的次数 , 但是还要处理有多少 ...
- linux基础 用户(组)管理
修改/etc/shadow文件 1.chage -m MINDAYS USERNAME#设置密码修改最小天数2.chage -M MAXDAYS USERNAME#设置密码修改最大天数3.chage ...
- Xamarin Essentials教程发送邮件Email
Xamarin Essentials教程发送邮件Email 邮件是一种更为灵活的数据分享方式.它可以帮助用户将一个应用程序的数据分享给其他用户,而其他用户不需要安装特定的应用程序,就可以在任意时间 ...