使用变参函数,拼接字符串的示例代码

来源:互联网 发布:java改string编码 编辑:程序博客网 时间:2024/06/14 10:23

最近做了个需求,就是各种拼接字符串。将"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个参数就会被漏掉

0 0
原创粉丝点击