文档章节

C/C++ split

 山里来的鱼
发布于 2016/01/28 15:02
字数 427
阅读 103
收藏 3

转自http://www.cnblogs.com/buffer/archive/2009/03/12/1409765.html

相关函数:index, memchr, rindex, strpbrk, strsep, strspn, strstr
表头文件:#include <string.h>

C/C++中的Split函数是strtok()其函数原型如下: 
char * strtok (char * str, const char * delimiters); 

函数说明 
strtok()用来将字符串分割成一个个片段。参数str指向欲分割的字符串,参数delimiters则为分割字符串,当strtok()在参数str的字符串中发现到参数delimiters的分割字符时则会将该字符改为'\0'字符。在第一次调用时,strtok()必需给予参数str字符串,往后的调用则将参数str设置成NULL。每次调用成功则返回下一个分割后的字符串指针。 

返回值 
返回下一个分割后的字符串指针,如果已无从分割则返回NULL。 


示例-1 
/* strtok example */ 
#include <stdio.h> 
#include <string.h> 

int main () 

char str[] ="a,b,c,d*e"; 
const char * split = ","; 
char * p; 
p = strtok (str,split); 
while(p!=NULL) { 
printf ("%s\n",p); 
p = strtok(NULL,split); 


getchar(); 
return 0; 


本例中,实现对字符串'a,b,c,d*e"用逗号(,)来作界定符对字符串进行分割。 
输出结果将如下所示: 



d*e 

因为delimiters支持多个分割符, 我们将本示例中的语句行 
const char * split = ","; 
改成 const char * split = ",*"; //用逗号(,)和星号(*)对字符串进行分割 

这样输出结果将如下所示: 




e

例子2:

#include <string.h> 
#include <stdio.h> 
#include <stdlib.h> 

char string[] = "1:ip:ipport:user "; 
char seps[] = ": "; 
char *token; 

int main( void ) 

printf( "Tokens:\n " ); 

// Establish string and get the first token: 
token = strtok( string, seps ); // C4996 
// Note: strtok is deprecated; consider using strtok_s instead 
while( token != NULL ) 

// While there are tokens in "string " 
printf( "%s\n ", token ); 

// Get next token: 
token = strtok( NULL, seps ); // C4996 


system( "pause "); 
return 0; 
}

本文转载自:http://www.cnblogs.com/buffer/archive/2009/03/12/1409765.html

共有 人打赏支持
粉丝 7
博文 156
码字总数 28874
作品 0
珠海
程序员
小朋友学经典算法(12):分割字符串

一、准备知识 在分割字符串之前,先来了解一些跟字符串相关的变量或函数: (1)sizetype:sizetype由string类类型和vector类类型定义的类型,用以保存任意string对象或vector对象的长度,标...

海天一树X
06/14
0
0
C++ string的trim, split方法

很多其他语言的libary都会有去除string类的首尾空格的库函数,但是标准C++的库却不提供这个功能。但是C++string也提供很强大的功能,实现trim这种功能也不难。下面是几种方法: 1.使用strin...

simpower
2015/08/07
0
0
C++基础教程之C/C++区别

C/C++基础教程之C/C++区别 这是C++教程得第一步,后续会持续更新哦!欢迎新手(具有C基础),老鸟可绕道,可指导。 C++标准输入和输出 C++标准输入和输出分别是cin和cout,用法非常简单 cin>>n...

这个人很懒什么都没留下
09/01
0
0
C语言/C++程序员编程学习自信心曲线图

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
05/10
0
0
C语言/C++永远都不会过时的编程语言

C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到...

小辰带你看世界
03/30
0
0

没有更多内容

加载失败,请刷新页面

加载更多

你为什么在Redis里读到了本应过期的数据

一个事故的故事 晚上睡的正香突然被电话吵醒,对面是开发焦急的声音:我们的程序在访问redis的时候读到了本应过期的key导致整个业务逻辑出了问题,需要马上解决。 看到这里你可能会想:这是不...

IT--小哥
今天
2
0
祝大家节日快乐,阖家幸福! centos GnuTLS 漏洞

yum update -y gnutls 修复了GnuTLS 漏洞。更新到最新 gnutls.x86_64 0:2.12.23-22.el6 版本

yizhichao
昨天
3
0
Scrapy 1.5.0之选择器

构造选择器 Scrapy选择器是通过文本(Text)或 TextResponse 对象构造的 Selector 类的实例。 它根据输入类型自动选择最佳的解析规则(XML vs HTML): >>> from scrapy.selector import Sele...

Eappo_Geng
昨天
2
0
Windows下Git多账号配置,同一电脑多个ssh-key的管理

Windows下Git多账号配置,同一电脑多个ssh-key的管理   这一篇文章是对上一篇文章《Git-TortoiseGit完整配置流程》的拓展,所以需要对上一篇文章有所了解,当然直接往下看也可以,其中也有...

morpheusWB
昨天
5
0
中秋快乐!!!

HiBlock
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部