博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ACL_ARGV --- 字符串分割动态数组
阅读量:6573 次
发布时间:2019-06-24

本文共 1904 字,大约阅读时间需要 6 分钟。

hot3.png

  字符串分割是在程序编写过程中经常需要做的事情,如,将字符串:hello world, you are welcome!,进行单词分割,结果希望得到5个单词:hello, world, you, are, welcome。使用 ACL_ARGV 函数便可以非常轻松地实现此功能,如下:

// 分割字符串,分割符为 ' ', '\t', ',', '!'ACL_ARGV *argv = acl_argv_split("hello world, you are welcome!", " \t,!");ACL_ITER iter;  // 遍历指针// 遍历分割后的结果acl_foreach(iter, argv) {    // 从遍历指针中取出字符串型数据    const char *ptr =  (const char*) iter.data;    // 打印单词    printf(">>>%s\n", ptr); }// 释放内存acl_argv_free(argv);

   由此可见使用ACL_ARGV函数分割字符串是如此简单。此外,因为 ACL_ARGV 结构定义符合 ACL_ITER 规范(参见 ),所以可以直接以 acl_foreach() {} 方式进行遍历。

 

  该例子用到了 lib_acl/include/acl_argv.h 中的两个函数接口,如下:

/** * 根据源字符串及分隔字符串生成一个字符串动态数组 * @param str {const char*} 源字符串 * @param delim {const char*} 分隔字符串 * @return {ACL_ARGV*} */ACL_API ACL_ARGV *acl_argv_split(const char *str, const char *delim);/** * 释放字符串动态数组 * @param argvp {ACL_ARGV*} 字符串动态数组指针 */ACL_API ACL_ARGV *acl_argv_free(ACL_ARGV *argvp);
 

  此外,acl_argv.h 中还提供了其它方便使用的函数接口,如:

/** * 向字符串动态数组中添加一至多个字符串,最后一个NULL字符串表示结束 * @param argvp {ACL_ARGV*} 字符串动态数组指针 * @param ... 字符串列表,最后一个为NULL, 格式如:{s1}, {s2}, ..., NULL */ACL_API void acl_argv_add(ACL_ARGV *argvp,...);/** * 向字符串动态数组中添加字段长度有限制的字符串列表 * @param argvp {ACL_ARGV*} 字符串动态数组指针 * @param ... 一组有长度限制的字符串列表,如: {s1}, {len1}, {s2}, {len2}, ... NULL */ACL_API void acl_argv_addn(ACL_ARGV *argvp,...);/** * 根据源字符串及分隔字符串生成一个字符串动态数组, 但限定最大分隔次数 * @param str {const char*} 源字符串 * @param delim {const char*} 分隔字符串 * @param n {size_t} 最大分隔次数 * @return {ACL_ARGV*} */ACL_API ACL_ARGV *acl_argv_splitn(const char *str, const char *delim, size_t n);/** * 源字符串经分隔符分解后,其结果被附加至一个字符串动态数组 * @param argvp {ACL_ARGV*} 字符串动态数组指针 * @param str {const char*} 源字符串 * @param delim {const char*} 分隔字符串 * @return {ACL_ARGV*} */ACL_API ACL_ARGV *acl_argv_split_append(ACL_ARGV *argvp, const char *str, const char *delim);
 

  这些函数提供了在对字符串进行分割组合时的操作功能。

      ACL 库下载位置:http://acl.sourceforge.net/

转载于:https://my.oschina.net/u/568966/blog/309579

你可能感兴趣的文章
Android高级开发面试题目,再也不用担心不能升职加薪了。
查看>>
Vue开发 localhost 替换成 本机ip无法访问
查看>>
面对对象、变量
查看>>
spring cloud微服务分布式云架构-Spring Cloud 分布式的五大重点
查看>>
深入探索以太坊世界状态
查看>>
spring cloud构建互联网分布式微服务云平台-Spring Cloud Commons 普通抽象
查看>>
顾连康复医院咋样?
查看>>
第一章:nginx环境搭建
查看>>
开源大数据周刊-第22期
查看>>
碎片化时间有多重要
查看>>
componentDidUpdate vs componentWillReceiveProps
查看>>
Ajax到底是什么?
查看>>
Vue.js实现可配置的登录表单
查看>>
浅拷贝和深拷贝
查看>>
我的2018春招实习+秋招总结【前端开发】
查看>>
社区活动 | Apache Flink 1.9 版本即将发布,新版本有哪些新特性?
查看>>
JSCore的基本使用
查看>>
MySQL索引原理及慢查询优化,了解一下?
查看>>
Android进阶:框架打造之IOC框架
查看>>
Android:使用 Intent 连接多个活动
查看>>