现在的位置: 首页 > 综合 > 正文

C++中常用函数学习

2017年12月12日 ⁄ 综合 ⁄ 共 1322字 ⁄ 字号 评论关闭

1 strtok

来自Linux-2.5.0中的string.c

strtok函数的源码如下,其功能是对传进去的C风格字符串s进行分割,分割符由第二个参数ct给出网上找到的一段代码(https://zhidao.baidu.com/link?url=-kcqYo2nAhvDoxGS04TXg5nShuRmiJ3jPenuLvUlHkOwRQjK4jbssZgeNs1F_ue_P8QDaKIUhKjeS1bXLHKmua),介绍strtok的使用

/**
 * strtok - Split a string into tokens
 * @s: The string to be searched
 * @ct: The characters to search for
 *
 * WARNING: strtok is deprecated, use strsep instead.
 */
char * ___strtok;
char * strtok(char * s,const char * ct)
{
	char *sbegin, *send;

	sbegin  = s ? s : ___strtok;//首次调用时s为真,所以sbegin指向s的首地址
	if (!sbegin) {		    //如果sbegin为NULL值说明传递的字符串为空,直接返回	
		return NULL;
	}
	sbegin += strspn(sbegin,ct);//返回字符串sbegin中第一个不在指定字符串ct中出现的字符下标
	if (*sbegin == '\0') {      //如果sbegin已经为字符串结束符则返回
		___strtok = NULL;
		return( NULL );
	}
	send = strpbrk( sbegin, ct);//依次检验字符串sbegin中的字符,当被检验字符在字符串ct中也包含时,则停止检验,并返回被包含的字符
	if (send && *send != '\0') //将分割字符的位置置为'\0'
		*send++ = '\0'; //然后将send的指针向后移动一个位置
	___strtok = send;       //将移动后的send赋给全局变量__strtoke,下一次循环调用时,由于传递给strtok的第一个参数为NULL,所以sbegin=___strtok,也就是上一次的位置send,直到将字符串分割完毕
  

	return (sbegin);
}

strtok的使用如下

#include   <string.h> 
#include   <stdio.h> 
main() 
{ 
    char   s[]= "Wang   NIang   Huangddddangccccang   ldldldang   XXXXXXXX "; 
    char   *d= "ang ";//在s串中将包含有 "ang "的位置处加上NULL,注意空格的输出 
    char   *p; 
    
    p=strtok(s,d);//第一次调用,传要处理的串参数地址s 
    while(p) 
    { 
        printf( "%s\n ",p); 
        p=strtok(NULL,d); } 

    getchar(); 
    return   0; 
} 

2 strtok_r


3 linux下hash_map键为string

http://blog.csdn.net/langwenjing/article/details/8290678

http://no001.blog.51cto.com/1142339/1073027/





【上篇】
【下篇】

抱歉!评论已关闭.