字符串操作之分割字符串
来源:互联网 发布:seo屈臣氏优化方案 编辑:程序博客网 时间:2024/05/21 10:01
分割字符串分两种,一类是以某个字符为key分割,一类是以某个串为key分割。
以串分割的
先找到key在原字符串中的位置,这个算法就多了,KMP
然后用strcnp,strcat来操作,举个例子,也是引出本次讨论的问题,http://www.youku.com:80/ok
删除:80三个字符。
char p[] = "http://www.youku.com:80/ok"; char *result = strchr(&p[5],':'); int local = result-p; int i = 0; int j = i+3; while(result[j]) { result[i] = result[j]; i++; j++; } result[i] = '\0'; cout<<p<<endl;
此处没有开辟新的空间,如果写成函数也可直接返回p指针,改变了p指针指向的内容。因为问题的特殊性,招到第二个冒号的位置就可以招到:80的位置了。
第二类问题,以某个字符分割
有库函数strtok()
char *strtok(char *s, const char *delim);
strtok()用来将字符串分割成一个个片段。参数s指向欲分割的字符串,参数delim则为分割字符串,当strtok()在参数s的字符串中发现到参数delim的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s字符串,往后的调用则将参数s设置成NULL。每次调用成功则返回被分割出片段的指针。
char sentence[]="This is a sentence with 7 tokens"; cout<<"The string to be tokenized is:\n"<<sentence<<"\n\nThe tokens are:\n\n"; char *tokenPtr=strtok(sentence," "); while(tokenPtr!=NULL) { cout<<tokenPtr<<'\n'; tokenPtr=strtok(NULL," "); } cout<<"After strtok, sentence = "<<sentence<<endl;
unix中有strseq()函数。
0 0
- 字符串操作之分割字符串
- 分割字符串操作
- IOS字符串分割操作
- Python字符串操作之字符串分割与组合
- Linux下C语言字符串操作之分割字符串总结
- JavaScript之分割字符串
- js javascript 字符串 操作 分割
- 字符串操作(分割:split)
- oracel 字符串分割成多行操作
- c库函数之分割字符串
- js之分割取字符串
- OJ 系列之字符串分割
- MySQL之Split分割字符串
- OJ系列之---字符串分割
- 华为oj之字符串分割
- 数据结构示例之分割字符串
- C语言之分割字符串
- Android开发之--分割字符串
- 数字2进制10进制表示长度比
- Removing Columns
- RelativeLayout用到的一些重要的属性
- P2P技术原理
- 2015 Multi-University Training Contest 5 1009 模板
- 字符串操作之分割字符串
- mac显示隐藏文件夹方法和命令
- 文件描述符及其重定向的学习笔记
- Thinkphp 3.2命名空间版如何使用PHPExcel导入Excel文件
- 设备管理(3.5)------嵌入式系统软件及操作系统知识
- Improving the GPA
- 《啪啪三国》技术详解
- 初涉canvas
- HDU 4006 POJ 2828 线段树(排列/找有序位置)