c++中实现将字符串按模式分段
2015-11-11 18:50
471 查看
java中String中有个split函数,可以将字符串按照给定的模式分段,返回一个字符串数组,c++标准库中没有这样的函数,于是动手利用string中的find和substr函数实现这样一个功能,直接贴代码:
运行结果为:
将空格换成其他模式稍作修改即可
<pre name="code" class="cpp">#include <iostream> #include <stdio.h> #include <string.h> #include <vector> #include <algorithm> using namespace std; void print(string str) { cout<<str<<endl; } vector<string> pattern_seg(const string str,const string pattern) { string::size_type pos; vector<string> vec; string buf(str); buf += pattern; int size = buf.size(); for(int i=0;i<size;i++) { pos = buf.find(pattern,i); if(pos<size) { string s= buf.substr(i,pos-i); vec.push_back(s); i = pos+pattern.size()-1; } } return vec; } int main() { string pattern(" "); string buf("aa bb cc dd ee"); vector<string> strvec(pattern_seg(buf,pattern)); for_each(strvec.begin(),strvec.end(),print); return 0; }
运行结果为:
将空格换成其他模式稍作修改即可
相关文章推荐
- c++set和multiset容器
- C语言基础-指针与数组
- 【C语言】reverse_str递归调用函数
- 【C语言】编写冒泡排序,排序一个整形数组。
- C语言:模拟实现printf,要求功能:print("ccc\ts!",'b','i','t',"welcome to y
- 漫谈 C++ 智能指针 02
- const和指针
- C/C++基础(三十) 编译与加载 静态库(.a)
- c++ lambda捕获列表
- c语言问题:输入输出数据的问题、if语句的一些问题
- 实现可变长度字符串的类
- c语言问题:输入包含两个单词s1和s2、空心菱形实现
- Netbeans Makefile: recipe for target 'XXX' failed 运行failed(退出值 -1073741511 找不到C/C++库文件,关键字
- 华为OJ测试--整型数组合并
- vc++读写配置文件
- C++中的字符串操作<cstring>和<string>的区别
- C++编译错误:multiple types in one declaration
- 关于C/C++中内存分配(写的非常好,值得一看)
- C++类的静态成员详细讲解
- win编程实践(1)【c++】