标准std::string分割字符串split
2015-01-30 15:44
671 查看
在C#中分割字符串有现成的函数Split可供调用,但是标准C++好像却没有现成的,还好根据STL地强大功能,可以很方便地自己实现出来,下面就是我写的分割函数:
其中,srcStr是待分割地字符串,delimStr是分隔符组成的字符串,可以有多个分隔符,最后的repeatedCharIgnored是指是否忽视待分割字符串中的重复分隔符,也就是说如果忽视,那么多个连续分隔符将被视为一个分隔符,这样最后得到的分割结果中是不会出现空字符串的,否则,分割结果中会出现空字符串。
splitString("what tatoo"," t",true)的返回结果为{"wha","a","oo"}
而splitString("what tatoo"," t",false)的返回结果为{"wha","","","a","oo"}
此算法受某位同学启发,特此感谢。
std::vector<std::string> splitString(std::string srcStr, std::string delimStr,bool repeatedCharIgnored) { std::vector<std::string> resultStringVector; std::replace_if(srcStr.begin(), srcStr.end(), [&](const char& c){if(delimStr.find(c)!=std::string::npos){return true;}else{return false;}}/*pred*/, delimStr.at(0));//将出现的所有分隔符都替换成为一个相同的字符(分隔符字符串的第一个) size_t pos=srcStr.find(delimStr.at(0)); std::string addedString=""; while (pos!=std::string::npos) { addedString=srcStr.substr(0,pos); if (!addedString.empty()||!repeatedCharIgnored) { resultStringVector.push_back(addedString); } srcStr.erase(srcStr.begin(), srcStr.begin()+pos+1); pos=srcStr.find(delimStr.at(0)); } addedString=srcStr; if (!addedString.empty()||!repeatedCharIgnored) { resultStringVector.push_back(addedString); } return resultStringVector; }
其中,srcStr是待分割地字符串,delimStr是分隔符组成的字符串,可以有多个分隔符,最后的repeatedCharIgnored是指是否忽视待分割字符串中的重复分隔符,也就是说如果忽视,那么多个连续分隔符将被视为一个分隔符,这样最后得到的分割结果中是不会出现空字符串的,否则,分割结果中会出现空字符串。
splitString("what tatoo"," t",true)的返回结果为{"wha","a","oo"}
而splitString("what tatoo"," t",false)的返回结果为{"wha","","","a","oo"}
此算法受某位同学启发,特此感谢。
相关文章推荐
- (C#)重写分隔符分割字符串 - string.Split(char[] separator)
- (C#)重写分隔符分割字符串 - string.Split(char[] separator) (New)
- 字符串分割--java中String.split()用法
- Lua string split分割字符串
- 标准字符串std::string和System::String, CString之间的转换
- std::string split 标准库字符串切割
- paip.c++ bcb 字符串String分割split 为 TStringList 不对的的问题解决..
- Split a string, but keep the the regexp (分割字符串,保留分隔符)
- string进阶字符串分割String.Split
- [寒江孤叶丶的Cocos2d-x之旅_20]Lua字符串分割函数分享,Lua StringSplit
- 在PL/SQL中如何分割字符串(Split String)
- (转)字符串分割--java中String.split()用法
- 标准字符串std::string和System::String, CString之间的转换
- string.Split方法来分割字符串的注意事项:
- 标准C++字符串string任意分割
- String 使用split,replaceAll按照关键字分割字符串
- 字符串分割--java中String.split()用法
- 字符串分割--java中String.split()用法
- 标准字符串std::string和System::String, CString之间的转换
- String.split() 字符串分割