c++ string split分割字符串
2017-12-03 16:19
483 查看
c++原生好像没有split分割字符串内置函数
调用
还可以加入去头去尾的,这样不会有空串
#include <iostream> #include <string> #include <typeinfo> #include <tuple> #include <map> #include <vector> #include <thread> #include <fstream> using namespace std; vector<string> split(string &str,string sp){ vector<string> split; //string sp="age"; int ex=0; for(int i=0;i<str.length();i++){ //比较最前面两个char字符,不相等直接再一下字符 if(str[i]!=sp[0]){ continue; } //如果开始两个相等那么再比较分隔字符串中下一个字符 //比较时候i是不增加的,用偏移量来,以防没有配匹退不回去 //++j是先增加一个直接比较第二个开始,因为前面第一个已经比较了 int j=1; for(j=1;j<sp.length();j++){ if(str[i+j]!=sp[j]){ break;//还没有比较完分隔字符就不同了,所以直接退出这个 } } if(j==sp.length()){ split.push_back(str.substr(ex,i-ex)); i=i+j; ex=i; } } //剩下全部加入去 split.push_back(str.substr(ex,-1)); return move(split); }
调用
int main() { ifstream in("json.txt"); if(not in){ cout<<"json.txt not open!"; return -1; } string json; getline(in,json); in.close(); vector<string> ss=split(json,","); for(auto & p:ss){ cout<<p<<endl; } return 0; }
还可以加入去头去尾的,这样不会有空串
vector<string> split(string &str,string sp){ vector<string> split; //string sp="age"; int ex=0; for(int i=0;i<str.length();i++){ //比较最前面两个char字符,不相等直接再一下字符 if(str[i]!=sp[0]){ continue; } //如果开始两个相等那么再比较分隔字符串中下一个字符 //比较时候i是不增加的,用偏移量来,以防没有配匹退不回去 //++j是先增加一个直接比较第二个开始,因为前面第一个已经比较了 int j=1; for(j=1;j<sp.length();j++){ if(str[i+j]!=sp[j]){ break;//还没有比较完分隔字符就不同了,所以直接退出这个 } } if(j==sp.length()){ if(i-ex>1) split.push_back(str.substr(ex,i-ex)); ex=i+j; i=i+j-1; } } //剩下全部加入去 if(ex<str.length()) split.push_back(str.substr(ex,-1)); return move(split); }
相关文章推荐
- How to split string in C++(分割字符串)
- C++:实现split分割字符串
- 如何利用String.Split()对字符串进行分割
- C++之字符串分割函数split
- Split a string, but keep the the regexp (分割字符串,保留分隔符)
- 字符串分割--java中String.split()用法
- C/C++实现split分割字符串
- MFC CString字符串/C++ string split
- 字符串分割--java中String.split()用法
- 字符串分割--Java中String.split()用法
- C++之split字符串分割
- 标准std::string分割字符串split
- 字符串分割的时候用StringUtils.split()方法代替string自带的split,特殊字符不用转义
- splitString CString 类型的字符串分割
- C++:实现split分割字符串
- delphi string.split 按照任意字符串分割语句
- c++分割字符串(类似于boost::split)
- C++ 分割字符串-Split
- 实战c++中的string系列--string的分割、替换(类似string.split或是explode())
- C++:实现split分割字符串