日志打印或者格式字符串时,可能会用到不定参数的使用,这里记录一下。

格式化字符串有很多方法:

##是一个连接符号,用于把参数连在一起

#是“字符串化”的意思,出现在宏定义中的#是把跟在后面的参数转换成一个字符串

并且# ##都只能出现在宏定义中

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的更多相关文章

  1. C和C++中的不定参数

    在初学C的时候,我们都会用到printf函数来写Hello World的程序.在我们看printf函数的声明时,会看到类似于下面代码 int printf(const char * __restric ...

  2. Python中使用%还是format来格式化字符串?

    Python中应该使用%还是format来格式化字符串?   %还是format Python中格式化字符串目前有两种阵营:%和format,我们应该选择哪种呢? 自从Python2.6引入了form ...

  3. JAVA中String.format的用法 格式化字符串,格式化数字,日期时间格式化,

    1.对整数进行格式化:%[index$][标识][最小宽度]转换方式        我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含义也很好理解, ...

  4. .NET中DateTime.Now.ToString的格式化字符串

    .NET中DateTime.Now.ToString显示毫秒:DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff") DateTime.N ...

  5. Objective-C中使用不定参数个数的方法调用

    Objective-C中,定义并使用带有不定参数个数的对象方法与C函数类似,规则上也要求不定参数列表中必须至少要有一个形参,然后参数列表的最后跟省略号表示不定参数.省略号不能放在参数当中部分,只能放在 ...

  6. subprocess中命令为参数序列和字符串的区别

    参数args 参数args可以是一个参数序列,也可以是一个单独的字符串.参数序列通常是首选的,因为它允许模块处理参数的转义和引号(例如,允许文件名中有空格). 如果传递参数序列,默认情况下,程序执行序 ...

  7. c(++)可变参数之格式化字符串

    0.序言 使用printf函数,其参数就是可变参数.下面将使用 C语言  的库函数实现可变参数的函数 . 用途(欢迎补充): A.记录日志,可能需要将变量格式化输出到日志文件. B.格式化字符串,显示 ...

  8. 在sql语句中使用 xml for path 格式化字符串的方法总结

    此方法实现的是将查询表中的某个字段,格式化成  字符串1,字符串2,字符串3...的格式 假设我们现在有两个表 分别是 分组表 grouped和分组成员表 groupuser grouped表有连个字 ...

  9. python 常见包中的不定参数

随机推荐

  1. 使用json web token

    由来 做了这么长时间的web开发,从JAVA EE中的jsf,spring,hibernate框架,到spring web MVC,到用php框架thinkPHP,到现在的nodejs,我自己的看法是 ...

  2. php(apache)切换版本

    php(apache)切换版本 1.brew link php@7.1 2.上两行写入 ~/.bash_profile文件 3.source ~/.bash_profile 4.sudo vi /et ...

  3. hdu 2091空心三角形

    把一个字符三角形掏空,就能节省材料成本,减轻重量,但关键是为了追求另一种视觉效果.在设计的过程中,需要给出各种花纹的材料和大小尺寸的三角形样板,通过电脑临时做出来,以便看看效果.  Input每行包含 ...

  4. HDFS常用API(1)

    一.HDFS集群API所需要jar包的maven配置信息 <dependency> <groupId>org.apache.hadoop</groupId> < ...

  5. POJ 2112 Optimal Milking (二分+最短路+最大流)

    <题目链接> 题目大意: 有K台挤奶机和C头奶牛,都被视为物体,这K+C个物体之间存在路径.给出一个 (K+C)x(K+C) 的矩阵A,A[i][j]表示物体i和物体j之间的距离,有些物体 ...

  6. 【ABP】ABP跨域调用API时出现的问题

    public override void Initialize() { IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAss ...

  7. Xamarin Essentials教程构建共享请求

    Xamarin Essentials教程构建共享请求 共享请求类ShareTextRequest可以用于构建复杂形式的数据,用于向其他应用传输.例如,它可以指定共享内容的主题Subject,用于给邮件 ...

  8. IDEA中的常用设置

    ps:对于开发工具,不同的开发人员有不同的设置喜好,这里介绍的是我个人的配置,不喜勿喷. Appearance:个人喜欢全黑主题,雅黑字体 背景图片, 效果如下,编写代码的时候有个自己喜欢的背景图片, ...

  9. Change position in observation

    HTML <!DOCTYPE HTML> <HTML> <head> <meta charset=" UTF-8"> <tit ...

  10. MySql中drop、truncate、delete的区别

    1.drop:能对table和view 用法:  drop table [is exists] 表1,表2,表3....: ①drop是DDL中删除表的操作,会删除表结构和所有数据,并释放空间. ②并 ...