最近做了个需求,就是各种拼接字符串。将"aaa","bbb","ccc"拼接成"aaa, bbb, ccc",参数的个数是不确定的。于是想到用变参函数来做挺好的,参考了FMDB的源代码,以下是代码:
// 变参函数,用","拼接多表字符串,最后一个参数应该是nil
-(NSMutableString*) concatTableStrings:(NSString*)first, ...
{
NSMutableString *result = [NSMutableString new];
[result appendString:first];
[result appendString:@","];
va_list ap;// 参数列表的指针
va_start(ap, first);// 指向第一个参数
NSString* next_arg;
while ((next_arg = va_arg(ap, NSString*))) {// 循环指向下一个参数,第一个参数不包括在内
[result appendString:next_arg];
[result appendString:@","];
}
[result substringToIndex:([result length]-1)];// 去掉最后一个","
va_end(ap);
return result;
}
关键是4个宏:va_list, va_start, va_arg, va_end。写变参函数主要注意2点:
1、最后一个参数要传nil进来,很多开源的库也都是这个风格
2、第一次执行va_arg,next_arg就已经指向第2个参数了。所以在执行va_arg之前,需要先处理第1个参数,否则第1个参数就会被漏掉
分享到:
相关推荐
oracle拼接字符串查询语句。 普通拼接字符串和拼接某一列的所有值。
程序开发者必须掌握的c# 拼接字符串的几种方式,此文对几种方式的性能的进行了总结和比较
自己写的变参函数,printf函数的实现(可输出整数,字符,字符串)
C语言变参函数设计
下面是用C语言实现不使用是strcat 函数实现连接两个字符串的功能。 源代码: #include void constring(char s[],char t[],char q[]); //函数声明 int main(void) { char s[100]; char q[100]; char t[200]; ...
* 超大字符串拼接,单个字符串4000、分隔符100,可拼出超4000的超长字符串 * 可自定义指定分隔符separator * 可自定义指定排序字段sequence,对于数字或日期类型的字段,先转为字符串,比如to_char(line, 'FM000'...
mysql拼接字符串函数
Gbase 8s内置函数之字符串函数
C语言程序设计-用函数实现字符串的复制, 不允许用strcpy()函数.c
C常用库函数-表 数学函数、字符函数、字符串函数、输入输出函数、动态分配函数和随机函数 C常用库函数-表 数学函数、字符函数、字符串函数、输入输出函数、动态分配函数和随机函数 C常用库函数-表 数学函数、字符...
SQL字符串函数SQL字符串函数SQL字符串函数SQL字符串函数SQL字符串函数SQL字符串函数SQL字符串函数SQL字符串函数
postgresql 字符串函数 收集各种字符串操作函数postgresql 字符串函数 收集各种字符串操作函数
自己写的几个字符串函数代码不用库文件自己写的几个字符串函数代码不用库文件自己写的几个字符串函数代码不用库文件,VS2010平台,C语言
C++常用库函数 缓冲区操作函数、字符分类函数、数据转换函数、数学函数、输入和输出函数、进程控制函数、字符串操作函数 C++常用库函数 缓冲区操作函数、字符分类函数、数据转换函数、数学函数、输入和输出函数、...
自定义聚集函数拼接字符串,根据网上常见的例子加以改进,可以自定义分隔符(利用的自定义type)。
mysql拼接字符串函数
分割字符串函数 分割字符串函数 分割字符串函数 分割字符串函数 分割字符串函数
mysql拼接字符串函数
Linux下常用函数-字符串函数 Linux下常用函数-字符串函数 Linux下常用函数-字符串函数
本文介绍了一个使用MATLAB编写的字符串数组示例,包含源码和详细说明。通过学习本示例,您将了解: 如何使用MATLAB创建包含单词的字符串数组; 如何使用disp函数打印字符串数组。 学习收获 通过阅读本示例并实践,...