各种Split功能演示

#include "stdafx.h"

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

using namespace std;

int SplitCount(const char *src, const char *split);
int Split(char *src, const char *split, char **dst, int count);

void TestSplit1();
void TestSplit2();
void TestSplit3();

int _tmain(int argc, _TCHAR* argv[])
{
TestSplit3();
return 0;
}

void TestSplit3()
{
wchar_t s[] = L"123-sldkf-123ls-343434-dfjdlkfj-dflcmvn";
wchar_t *delim = L"-";
wchar_t *p;

p = wcstok(s, delim);
while (p != NULL) {
printf("%ws\n", p);
p = wcstok(NULL, delim);
}
}

void TestSplit2()
{
char s[] = "123-sldkf-123ls-343434-dfjdlkfj-dflcmvn";
char *delim = "-";
char *p;

p = strtok(s, delim);
while (p != NULL) {
printf("%s\n", p);
p = strtok(NULL, delim);
}
}

void TestSplit1()
{
char s[] = "123-sldkf-123ls-343434-dfjdlkfj-dflcmvn";
char *delim = "-";
char **p;
int n = 0;
string str[6];

n = SplitCount(s, delim);
p = (char **)malloc(256);

Split(s, delim, p, n);
for (int i = 0; i < n; i++)
{
str[i] = p[i];
}

free(p);
}

int SplitCount(const char *src, const char *split)
{
int n = 0;
int len;
const char *p;

len = strlen(split);
p = src;
if (*p != ‘\0‘)
{
n++;
while (*p != ‘\0‘)
{
// Compare bytes
if (memcmp(p, split, len) == 0)
{
p += len;
if (*p == ‘\0‘) break;
//
n++;
}
else {
// Next char
p++;
}
}
}

return n;

}

int Split(char *src, const char *split, char **dst, int count)
{
int n = 0;
int len;
char *p;

len = strlen(split);
p = src;
if (*p != ‘\0‘ && n < count)
{
dst[n++] = p;
while (*p != ‘\0‘ && n < count)
{
// Compare bytes
if (memcmp(p, split, len) == 0)
{
// Fill
memset(p, 0, len);
p += len;
if (*p == ‘\0‘ || n >= count) break;
//
dst[n++] = p;
}
else {
// Next char
p++;
}
}
}

return n;

}

时间: 2024-08-05 05:39:26

各种Split功能演示的相关文章

lua实现string的split功能

function split(str,sp) local result = {} local i = 0 local j = 0 local num = 1 local pos = 0 while true do i , j = string.find(str,sp,i+1) if i == nil then if num ~=1 then result[num] = string.sub(str,pos,string.len(str)) end break end result[num] =

3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案基础篇(项目功能演示--GPRS )

2-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案基础篇(项目功能演示--Wi-Fi ) 这节演示 STM32采集的温湿度数据通过GPRS模块传给手机APP,APP上有个开关按钮,发指令给GPRS模块,然后发给STM32. 注:GPRS的程序都做成的透传的,就是GPRS模块通过串口接收的数据直接发给服务器,然后服务器再发给手机..GPRS模块通过网络接收的数据直接通过串口发给单片机. 一,给GPRS模块下载程序 ①调整波动开关位置 然后 记得插手机卡 二,测试

Spring 核心功能演示

Spring 核心功能演示 Spring Framework 简称 Spring,是 Java 开发中最常用的框架,地位仅次于 Java API,就连近几年比较流行的微服务框架 SpringBoot,也是基于 Spring 实现的,SpringBoot 的诞生是为了让开发者更方便地使用 Spring,因此 Spring 在 Java 体系中的地位可谓首屈一指. 当然,如果想要把 Spring 所有功能都讲的一清二楚,远远不是一两篇文章能够做到的,但幸运的是,Spring 的基础资料可以很轻易的搜

ASP .net(照片列表详细功能演示)

大家好,今天我们需要讲解的内容就是把上篇文章当中提到的照片列表的很多功能细化去做. 那么之间我们两篇文章的目的就是要让大家深刻体会get,post的使用场景极其作用.像一般处理程序的使用,隐藏域的使用,请求上下文,至于用JQuery,AJAX等的介绍在后面会有,前面两篇文章不做重点讲解. 首先在我们上次写的代码的基础之上实现光棒效果,直接写到模板页里面就行了.用JavaScript写的话代码太多了,所以我们用JQuery来写. 一.需要注意的地方 二.隔行变色效果 三.比上次好看了吧? 四.光棒

Bat 处理字符串分割 (split功能)

最近有有个小需求需要将shell 脚本的功能挪到windows中,但发现shell中有数组概念,但windows中却没有,同时shell中有很多方式处理字符串分割,但bat中就显得比较鸡肋,经过一番查找,终于有了方案(Stack Overflow:http://stackoverflow.com/questions/1707058/how-to-split-a-string-in-a-windows-batch-file): 方案: 通过for循环处理,而处理的方式又可以分两种,一种是普通for

Web Api其中的PUT功能演示

Insus.NET这几天均在学习Web API知识,并练习.怎样获取数据,提交数据或是保存数据.你可以温习一下<Post model至Web Api创建或是保存数据>http://www.cnblogs.com/insus/p/4343833.html 和<添加JSON Data到已经存在的JSON文件中>http://www.cnblogs.com/insus/p/4344547.html ,这均是把json序列化数据保存至文件中. 即然有对数据获取,提交保存,那当然有更新数据的

Windows 10 Mobile 演示:系统输入法功能演示

笔者近期会发布多篇<Windows 10 Mobile 演示>文章,帮助想买 Windows 10 手机的朋友了解 Windows 10 Mobile 系统特色.今天给大家带来 Windows 10 Mobile 自带输入法演示: 滑行输入法,期待已久,之前 Windows phone 8.1 仅有 英文有滑行输入法 语音输入法:非常适合写日记,说一句,上面会显示一句,而且不用重复点语音图标,它会一句一句聆听显示. Lumia 1520 大屏手机可以将键盘设置为单手模式,非常方便: 输入法很多

OpenCV For Java环境搭建与功能演示

OpenCV概述 OpenCV做为功能强大的计算机视觉开源框架,包含了500多个算法实现,而且还在不断增加,其最新版本已经更新到3.2.其SDK支持Android与Java平台开发,对于常见的图像处理需求几乎都可以满足,理应成为广大Java与Android程序员的首先的图像处理框架.Java中使用OpenCV的配置及其简单,可以毫不客气的说几乎是零配置都可以. 一:配置 配置引入OpenCV相关jar包,首先要下载OpenCV的自解压版本,下载地址: http://opencv.org/open

Lua自己实现string.split功能

local function split(str, d) --str是需要查分的对象 d是分界符 local lst = { } local n = string.len(str)--长度 local start = 1 while start <= n do local i = string.find(str, d, start) -- find 'next' 0 if i == nil then table.insert(lst, string.sub(str, start, n)) bre