strtok()切割字符串函数
#include <iostream>
#include <string.h>
using namespace std;
char *my_strtok(char *dist,const char *src)
{
static char *result;
//此处使用静态变量保存dist,
//为了满足库函数strtok(NULL," ")的实现。
char map[32];
const char *p = src;
memset(map,0,sizeof(map));
while (*p)
{
map[*p >> 3] |= (0x1 << (*p & 0x7));
p++;
}
//ASCII中总共仅仅有256个字符。所以我们将src映射到32个char数组中,
//然后将较低的7位取出作为该数组中8个位中的一位,而且将该位置1。
//表示这个位置存在。在这里要保证唯一确定的一一相应的关系,刚好
//32个char数组就能够满足我们的需求了。
char *q;
if (dist)
q = dist;
else
q = result;
//假设从外部传进来的第一个參数是NULL。那么我们依据上一个參数
//的结束位置開始。这里要用到保存的result变量。
while ((map[*q >> 3] & (1 << (*q & 0x7))) && *q)q++;
//除去前面的多余切割符号。
dist = q;
for (; *dist; dist++)
{
if (map[*dist >> 3] & (0x1 << (*dist & 0x7)))
{
*dist='\0';
dist++;
break;
}
//第一次出现制定切割符的地放,然后停止break。
}
result = dist;
//此处result的作用就来了,保存上一次操作的最后一个位置的下一个位置。
//也就是说,假设外面传进来NULL作为第一个參数的话,我们就会从result開始。
return q;
}
int main()
{
char s[] = "abc efg hlk";
cout << my_strtok(s, " ") << endl;
cout<<my_strtok(NULL, " ")<<endl;
cout << my_strtok(NULL, " ") << endl;
return 0;
}
strtok()切割字符串函数的更多相关文章
- hive字符串函数
1. 字符串长度函数:length 语法: length(string A) 返回值: int 说明:返回字符串A的长度 举例: hive> select length('abcedfg') f ...
- 字符串函数之Strtok()函数
Strtok()函数详解: 该函数包含在"string.h"头文件中 函数原型: char* strtok (char* str,constchar* delimiters ) ...
- PHP 中使用explode()函数切割字符串为数组
explode()函数的作用:使用一个字符串分割另一个字符串,打散为数组. 例如: 字符串 $pizza = "第1 第2 第3 第4 第5 第6"; 根据空格分割后:$piece ...
- C语言分割字符串函数strtok
在编程过程中,有时需要对字符串进行分割.而有效使用这些字符串分隔函数将会给我们带来很多的便利. 下面我将在MSDN中学到的strtok函数做如下翻译. strtok :在一个字符串查找下一个符号 ch ...
- loadrunner中切割字符串
下面函数的作用: http://blog.csdn.net/hgj125073/article/details/8447605 通过-与: 字符切割字符串,即-与:字符已经被\0 字符取代 char ...
- 常用的字符串函数-S
header('content-type:text/html;charset=utf-f'); /* $var=addslashes($_GET['username']);//转义表单提交内容中的引号 ...
- PHP常用的数学函数和字符串函数
PHP常用函数总结 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999); // 10 ...
- C语言字符串函数例子程序大全 – string相关
关于字符串函数的应用细则,例子程序 – jerny 函数名: stpcpy 功 能: 拷贝一个字符串到另一个 用 法: char *stpcpy(char *destin, char *source) ...
- 【C++实现python字符串函数库】一:分割函数:split、rsplit
[C++实现python字符串函数库]split()与rsplit()方法 前言 本系列文章将介绍python提供的字符串函数,并尝试使用C++来实现这些函数.这些C++函数在这里做单独的分析,最后我 ...
随机推荐
- php定位并且获取天气信息
/** *获取天气预报信息 **/ header("Content-type: text/html; charset=utf-8"); class getWeather{ priv ...
- Telnet操作memcached
telnet登录 #telnet <ip> [root@c1 ~]# telnet Trying 127.0.0.1... Connected to 127.0.0.1. Escape c ...
- ElasticSearch Mapping中的字段类型
1)string: 默认会被分词 2)数字类型主要如下几种: long:64位存储 integer:32位存储 short:16位存储 byte:8位存储 double:64位双精度存储 f ...
- 旺财C# .NET代码生成器之DTcms4/5代码批量生成功能
经近半年的实战积累.于2017年6月底,增加对第三方开源软件DTcms(4和5都支持)的代码生成支持. 可以一键生成的DTcms4/5代码如下:1.Model经典三层实体2.DAL经典三层数据库访问层 ...
- JZYZOJ1535 [haoi2014]穿越封锁线
http://172.20.6.3/Problem_Show.asp?id=1535 整体来说是道水题,但是穿过点的判定把我坑得wa了两次,考场上这可是40分的水分啊啊啊. 开始的错误想法:排序后向上 ...
- 【BFS】Power Hungry Cows
Power Hungry Cows Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 5522 Accepted: 1384 ...
- 【预处理】【分类讨论】Playrix Codescapes Cup (Codeforces Round #413, rated, Div. 1 + Div. 2) C. Fountains
分几种情况讨论: (1)仅用C或D买两个 ①买两个代价相同的(实际不同)(排个序) ②买两个代价不同的(因为买两个代价相同的情况已经考虑过了,所以此时对于同一个代价,只需要保存美丽度最高的喷泉即可)( ...
- ListView EditText 实现的三种方式
原文网址:http://blog.sina.com.cn/s/blog_682139d001013omd.html 这段时间搞一个android表格,真是搞死人,让我想到iphone开发是何其的简单啊 ...
- kong添加upstream
整理的文档比较早,kong版本可能是0.10.3版本.详情请看官网最新文档 准备 使用kong代理后端请求 1.开放几个接口如下: 本地请求1:http://aaa.wyc.com:8888/aaa ...
- Problem C: 矩阵对角线求和
#include<stdio.h> int main() { ][]; scanf("%d",&n); ,sum2=; ;i<n;i++) ;j<n ...