今天写程序,遇到了一个要实现string.split()这个的一个函数。python里面有,qt里面有,c++里面没有。照着网上抄了一个,放在这里。有需要的时候直接拽过去用,否则老是写了小例子就扔,用的时候没有,也是个麻烦事

例如 “aa*bb*cc” 会存储成vector<string> "aa" "bb" "cc"

 // temp1.cpp : 定义控制台应用程序的入口点。

 #include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <string>
#include <vector>
using namespace std; int _tmain(int argc, _TCHAR* argv[])
{
char a[] = "abc*123*xyz"; //目标是解析成 abc 123 xyz 然后存储在下面的变量 vector<string>中
string strArry = a;
vector<string> strArryList; size_t last = ;
size_t index = strArry.find_first_of("*",last); //找到last坐标后面的第一个*
while( index != std::string::npos )//找到一个推进vector一个,一直到找到了最后
{
strArryList.push_back( strArry.substr(last, index-last));
last = index +;
index = strArry.find_first_of("*",last);
}
if(index - last > ) //记得把最后一个推进去.这里是"xyz"
{
strArryList.push_back( strArry.substr(last, index-last));
} for(int i = ; i < strArryList.size(); i++)
std::cout<<strArryList[i]<<std::endl; getchar();
return ;
}

下面是又写的一个split函数的代码

 #include <iostream>
#include <string>
#include <vector> using namespace std;
// spCharacter [IN] : 分隔符
// objString [IN] : 要分解的字符串
// stringVector [OUT] : 分解了的字符串
bool splitString(char spCharacter, const string& objString, vector<string>& stringVector)
{
if (objString.length() == )
{
return true;
} size_t posBegin = ;
size_t posEnd = ;
bool lastObjStore = true; while (posEnd != string::npos)
{
posBegin = posEnd;
posEnd = objString.find(spCharacter, posBegin); if (posBegin == posEnd)
{
posEnd += ;
continue;
} if (posEnd == string::npos)
{
stringVector.push_back( objString.substr(posBegin, objString.length()-posBegin) );
break;
} stringVector.push_back( objString.substr( posBegin, posEnd - posBegin) );
posEnd += ;
}
return true;
}
int main(int argc, char** argv)
{
vector<string> paths;
paths.push_back("abcde");
paths.push_back("aaar/");
paths.push_back("aaar//");
paths.push_back("aaar/bbb");
paths.push_back("aaar/c/bbb");
paths.push_back("aaar//bbb");
paths.push_back("/aar");
paths.push_back("/");
paths.push_back(""); for (auto iter = paths.begin(); iter != paths.end(); iter++)
{
vector<string> temp;
splitString('/', *iter, temp); cout<<"--------begin------"<<endl;
cout<<"the source string : ["<<*iter<<"]"<<endl;
cout<<"-------------------"<<endl;
for (auto iterSplit = temp.begin(); iterSplit != temp.end(); iterSplit++)
{
cout<<*iterSplit<<endl;
}
cout<<"--------end------"<<endl<<endl;;
} return ;
}
编译命令: g++ -o test main.cpp -std=c++11


实现c++的string的split功能的更多相关文章

  1. String类常用功能

    String类常用功能 判断: boolean equals(Object obj) boolean equalsIgnoreCase(String str) //忽略大小写 boolean star ...

  2. Java基础知识强化35:String类之String的其他功能

    1. String类的其他功能: (1)替换功能: String replace(char old, char new) String replace(String old,String new) ( ...

  3. sql server 实现split功能 行转列

    --實現split功能的函數create function [dbo].[func_split]( @SourceSql varchar(max), @StrSeprate varchar(10))r ...

  4. C语言的split功能

    其它高级语言都有字符串的split功能,但C没有系统自带的,只能自己写一个了. void c_split(char *src, const char *separator, int maxlen, c ...

  5. String的split方法,你真的懂吗

    String的split方法相信大家都不陌生,或多或少都用过它将字符串转成一个数组,但是就是这样一个简单的方法,里面也有一个不得不注意.不深不浅的小坑. 本地测试代码如下图所示: 图1 大家会发现sp ...

  6. String的split方法支持正则表达式

    String的split方法支持正则表达式: 1. 正则表达式\s表示匹配任何空白字符 2. +表示匹配一次或多次

  7. String的split()方法探索和大揭秘

    事实上没打算写这么一篇博文的,可是昨天在逛论坛的时候,发现一帖子,然后我又把帖子的内容在群里发了一通,结果出现了让人吃惊的结果,所以这里简单的给大家分享一下split()方法,免得大伙儿以后还会出现这 ...

  8. BUGFIX 09 - 记一次Java中String的split正则表达式匹配 - 引发`OutOfMemoryError: Java heap space`的oom异常 排查及解决 -Java根据指定分隔符分割字符串,忽略在引号里面的分隔符

    问题简述 说白了,Java根据指定分隔符分割字符串,忽略在引号(单引号和双引号)里面的分隔符; oom压测的时候,正则匹配"(?=(?:[^\"]*\"[^\" ...

  9. String.Split()功能

    我们在过去的教训 String.Join功能(http://blog.csdn.net/zhvsby/archive/2008/11/28/3404704.aspx).当中用到了String.SPli ...

随机推荐

  1. hibernate 入门案例

    1,创建工程,导入jar ojdbc14.jar 数据库驱动包,我用的是oracle数据库,根据实际的数据库选择驱动包 创建java类,并利用bibernate插件完成orm映射,创建hbm.xml ...

  2. JavaScript的正则表达式使用

    一:遇到问题 今天做项目时,在前台js对身份证号进行验证时,一直达不到预期的效果,我是监控文本域变量, $scope.watch('form.idNo',function(v){ if(!v){ re ...

  3. HTML <base> 标签的 target 属性 —— <base target="_blank" />

    为页面上所有链接规定默认目标: <head> <base target="_blank" /> </head> <body> < ...

  4. Quartz Scheduler(2.2.1) - hello world

    简单示例 1. maven 依赖 <dependencies> <dependency> <groupId>org.quartz-scheduler</gro ...

  5. 使用Xpath从网页中获取数据

    /// <summary> /// 从官方网站中抓取产品信息存放在本地数据库中 /// </summary> /// <returns></returns&g ...

  6. IIS服务器应用程序不可用的解决办法

    转载:http://www.cnblogs.com/caicainiao/archive/2010/11/29/1891085.html 这个问题见了好几次,在.net下 Microsoft visu ...

  7. unity3d遍历出Cube里面所有子对象

     cube目录下有n个cube,可不可以一下子遍历出所有的对象,而不用一个一个的find?find(“Cube1”)   1.foreach(Transform ts in cube)   2.cub ...

  8. 在ASP.NET项目中使用CKEditor +CKFinder实现图片上传功能

    前言 之前的项目中一直使用的是FCKeditor,昨天突然有个想法:为什么不试一下新的CKEditor呢?于是花了大半天的时间去学习它的用法,现在把我的学习过程与大家分享一下. 谈起FCKeditor ...

  9. SQL server 2008 安装问题解决

    安装sqlserver2008 出现的一些问题解决方法 1,安装sqlserver的时候出现如下图所示,解决办法是:开始→运行→输入“regedit”→找到“HKEY_LOCAL_MACHINE\SY ...

  10. Illegal pattern character 'i' 解决问题

    java.lang.IllegalArgumentException: Illegal pattern character 'i' at java.text.SimpleDateFormat.comp ...