今天写程序,遇到了一个要实现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. cocos2d-x之MoonWarriors用c++实现

    玩了sample里面的cocos2d-html5的MoonWarriros,感觉效果做得挺不错的,但是源代码是javascript,鄙人又不会这门语言. github上也有别人贡献的c++代码,不过还 ...

  2. Android进阶笔记15:ListView篇之图片优化

    1.图片异步加载: (1)处理图片的方式: 如果ListView中自定义的Item中有涉及到大量图片的,一定要对图片进行细心的处理,因为图片占的内存是 ListView 项中最头疼的,处理图片的方法大 ...

  3. 前端必会html知识整理

    1.浏览器内核:         1.ie:trident(三叉戟)内核         2.firefox:gecko(壁虎)内核         3.safari:webkit(浏览器核心)内核 ...

  4. ORM之PetaPoco入门(二)--Petapoco基本用法

    1. Petapoco基本用法 1.1. 创建示例工程 首先创建一个工程文件,为了便于展示数据这里创建一个类型为:WindowsApplication的工程文件.命名为:PetapocoTest. 程 ...

  5. [改善Java代码] 提倡异常的封装

    JavaAPI提供的异常都是比较低级别的,低级别是指只有开发人员才能看懂的异常.而对于终端用户来说基本上就是天书,与业务无关,是纯计算机语言的描述. 异常封装的三方面的好处: 1)提高系统的友好性   ...

  6. 关于hkcmd.exe造成的和Eclipse之间热键冲突

    可能是自己新买的笔记本比较强大,显卡也比较牛叉.当使用一些常用的Eclipse快捷键的时候Eclipse本身没有反应,反而显示器有了反应. 经常用的Eclispse中的快捷键Ctrl+Alt+↑ 和C ...

  7. linux进程间通信概述

    一个大型的应用系统,往往需要众多进程协作,进程间通信的重要性显而易见. 进程间通信有如下一些目的: 数据传输:一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几兆字节之间. 共享数据: ...

  8. COGS 265 线段覆盖

    265. 线段覆盖 ★★☆   输入文件:xdfg.in   输出文件:xdfg.out   简单对比时间限制:2 s   内存限制:20 MB [问题描述] 有一根长度为 L 的白色条状物.有两种操 ...

  9. poj3393[模拟题]

    Lucky and Good Months by Gregorian Calendar Time Limit: 1000MS   Memory Limit: 65536K Total Submissi ...

  10. XP下Winform背景透明问题

    win 7上usercontrol控件背景色设置为透明,显示无异常.到XP上一看,变成Control颜色了,即常见的灰色.网上搜了一堆,没发现有用的.偶然看到XP上Label的背景色可以透明,于是用L ...