字符串分割是在程序编写过程中经常需要做的事情,如,将字符串: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 规范(参见C语言中迭代器的设计与使用
),所以可以直接以 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/
分享到:
相关推荐
int main(int argc, char* argv[]) { if (SDL_Init(SDL_INIT_EVERYTHING) ) { // 错误处理 return -1; } SDL_Surface* image = IMG_Load("image.png"); if (image == NULL) { // 图像加载失败的错误处理 ...
3. **uic**: 这是一个命令行工具,可以将Qt Designer创建的.ui文件转换为Python源代码,使得在运行时可以动态加载UI布局。 4. **rcc**: 资源编译器,用于将图标、图片和其他资源打包进Python模块,以便在程序中方便...
5. **图形渲染能力**:Qt6引入了QML(Qt Meta Language),PyQt6也支持,它是一种声明式语言,用于创建富有动态效果和动画的用户界面。 6. **网络编程**:PyQt6包含了对网络编程的支持,可以方便地进行HTTP请求、套...
`argv`(argument vector)在C语言中是一个特殊的二维字符数组,它由`main()`函数接收。`argv[0]`通常代表执行程序的名称,`argv[1]`到`argv[argc-1]`是用户在命令行上输入的参数,其中`argc`(argument count)表示...
* argv: 字符串数组。 在DOS 3.X 版本中, argv[0] 为程序运行的全路径名 对DOS 3.0 以下的版本, argv[0]为空串("") 。 argv[1] 为在DOS命令行中执行程序名后的第一个字符串 argv[2] 为执行程序名后的第二个...
ros::init(argc, argv, "cv_bridge_example"); ros::NodeHandle nh; image_transport::ImageTransport it(nh); image_transport::Subscriber sub = it.subscribe("camera/image_raw", 1, imageCallback); ros...
12_argv_example
用SHA算法实现对任意文件的hash摘要,并且把hash摘要值(至少为160bit)存入另一个文件,形如: hash inputfile hashvaluefile 说明:SHA算法的实现至少为160bit,或者可以... int main(int argc, char *argv[ ])
字符数组是一种静态存储方式,可以直接使用字符数组名作为字符串参数传递给函数。指针变量则可以指向一个字符串常量或字符数组。 例如,下面是一个用字符数组存放字符串的例子: ```c char string[] = "I am a ...
`argv`则是一个指针数组,每个元素都是一个字符指针,依次指向每个命令行参数的字符串。值得注意的是,`argv[0]`通常是程序的名称,而`argv[1]`到`argv[argc-1]`则分别对应其他的命令行参数。 以下是一个简单的示例...
- 字符数组是用来存放字符类型的数组,主要用于存储字符串。 - 可以是一维数组,如 `char c_a[10];` 也可以是多维数组,例如 `char c_a[5][5];`。 **初始化**: - 逐个元素赋值,如 `char c_a[14] = {'I', ' ', 'a'...
void main(int argc,char* argv[]) { char arg[50]={0}; arg[0]= '\"'; strcpy(arg+1,argv[0]); int len=int(strlen(arg)); arg[len]= '\"'; HWND hWnd=FindWindow(NULL,arg); //找到程序运行窗口的句柄 ...
_ :参数数组,文件输入; 比如expand one.js two.js three.js fs :使用 node/io 兼容的 fs 覆盖文件系统。 t :制表位的数量。 默认值为 8。 执照 (c) 2015 年凯尔·罗宾逊·杨。 麻省理工学院执照
- 在“OgreTe”的属性页中,对“配置属性”>“常规”下的“字符集”设置为“使用多字节字符集”(Debug模式下)。 - “配置属性”>“调试”下的“工作目录”设置为D:\OgreSDK\OgreSDK_vc9_v1-7-2\bin\debug。 - ...
int main(int argc, char *argv[]) { QApplication app(argc, argv); QLabel *label = new QLabel("Hello Qt!"); label->show(); return app.exec(); } ``` 这段代码创建了一个简单的Qt应用程序,显示一个带有...
您可能实际上想看一下我的另一个实用程序 。 这可能是您真正要寻找的:-) argv-set-env ... 在build的情况下,会将NODE_ENV设置为字符串'production' ,在test的情况下,它将NODE_ENV设置为字符串'test'
int _tmain(int argc, _TCHAR argv[]) int _tmain(int argc, _TCHAR argv[])
根据提供的文件信息,本文将详细解释“C语言删除字符串中指定的所有字符”的实现方法与原理。此代码示例提供了一种高效的方法来移除字符串中的特定字符,并且已经在Windows和Linux环境下进行了测试验证。 ### 一、...
为了将一个字符串转换为 argc/argv 形式,我们需要按照空格或特定分隔符将字符串切割,并将结果存储在一个字符数组中。这通常涉及到动态内存分配,因为参数数量在运行时可能未知。 一个简单的实现步骤可能如下: 1...