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++函数在这里做单独的分析,最后我 ...
随机推荐
- MD5加密和RSA加密
1.MD5加密 MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),MD5算法的使用不需要支付任何版权费用. MD5的功能: ①.输入任意长 ...
- Linux操作命令(七)
本次实验将介绍 Linux 命令中 cut.paste 和 tr 命令的用法. cut paste tr 1.cut cut命令是一个将文本按列进行切分的小工具,他可以指定分隔每列的定界符. 如果一行 ...
- NBUT 1218 You are my brother
$dfs$. 记录一下每一个节点的深度就可以了. #include<cstdio> #include<cstring> #include<cmath> #inclu ...
- CentOS7和CentOS6的主要区别
了解一下就好 1. 文件系统的区别.CentOS6默认使用的是ext4的文件系统,而CentOS7使用的是xfs. 2. 硬盘默认调度算法不一样.CentOS6默认使用的是cfq,而CentOS7 ...
- JDBC 编程工具包
工具包结构 工具包代码 BeanCountHander.java import java.sql.ResultSet; public class BeanCountHander implements ...
- BZOJ 2157 旅游(动态树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2157 [题目大意] 支持修改边,链上查询最大值最小值总和,以及链上求相反数 [题解] ...
- 【OpenJudge9275】【Usaco2009 Feb】【递推】Bullcow
Bullcow 总时间限制: 12000ms 单个测试点时间限制: 1000ms 内存限制: 131072kB [描述] 一年一度的展会要来临了,农民约翰想要把N(1 <= N <= 10 ...
- #iOS问题记录# UIWebView滑动到底部
最近看Tmall的iOS APP,在Tmall的商品简介页面,当拖动到最底部时,会提示继续向上拖动,“查看图文详情”: 觉得这个设计挺好的.闲来无事,自己UIWebView模仿一下,问题是检查UIWe ...
- JavaScript 巧学巧用
关于 微信公众号:前端呼啦圈(Love-FED) 我的博客:劳卜的博客 知乎专栏:前端呼啦圈 前言 由于工作和生活上的一些变化,最近写文章的频率有点下降了,实在不好意思,不过相信不久就会慢慢恢复过来, ...
- 基于tiny4412的Linux内核移植 -- SD卡驱动移植(五)
作者信息 作者: 彭东林 邮箱:pengdonglin137@163.com QQ:405728433 平台简介 开发板:tiny4412ADK + S700 + 4GB Flash 要移植的内核版本 ...