C++ string split trim
2016-04-07 10:54
429 查看
</pre><pre name="code" class="cpp">
</pre><pre name="code" class="cpp">//注意:当字符串为空时,也会返回一个空字符串 void split(std::string& s, std::string& delim,std::vector< std::string >* ret) { size_t last = 0; size_t index=s.find_first_of(delim,last); while (index!=std::string::npos) { ret->push_back(s.substr(last,index-last)); last=index+1; index=s.find_first_of(delim,last); } if (index-last>0) { ret->push_back(s.substr(last,index-last)); } }
std::string& trim(std::string &s) { if (s.empty()) { return s; } s.erase(0,s.find_first_not_of(" ")); s.erase(s.find_last_not_of(" ") + 1); return s; }
头文件:#include <string.h>
定义函数:char * strtok(char *s, const char *delim);
函数说明:strtok()用来将字符串分割成一个个片段。参数s 指向欲分割的字符串,参数delim 则为分割字符串,当strtok()在参数s 的字符串中发现到参数delim 的分割字符时则会将该字符改为\0 字符。在第一次调用时,strtok()必需给予参数s 字符串,往后的调用则将参数s 设置成NULL。每次调用成功则返回下一个分割后的字符串指针。
返回值:返回下一个分割后的字符串指针,如果已无从分割则返回NULL。
size_t Tokenizer(char *pszInput, char* pszSep, STRSET &Tokens) { char *pTok = strtok(pszInput, pszSep); while(pTok != NULL ) { Tokens.insert(string(pTok)); pTok=strtok(NULL, pszSep); } return Tokens.size(); } //trim leading/trailing white spaces from a string inline string Trim(const string& s) { if(s.length() == 0) return s; int beg = (int)s.find_first_not_of(" \a\b\f\n\r\t\v"); int end = (int)s.find_last_not_of(" \a\b\f\n\r\t\v"); if(beg == string::npos) // No non-spaces return ""; return string(s, beg, end - beg + 1); }
相关文章推荐
- c++第二次作业
- 搜索算法-二分搜索-方程解问题(problem 1002)
- c++实验3-个人所得税计算器
- c语言中typedef作用
- C++第3次实验
- C++之类的const成员变量和成员函数2
- 第五届蓝桥杯决赛C\C++B组——Log大侠
- C++实验3—选择结构程序设计-多分段函数求值
- c++实验3-个人所得税计算器
- c++实验3-个人所得税计算器
- C语言中的atan和atan2
- c++第三次实验。个人所得税计算器
- C++第三次实验(个人所得税计算器)
- C++第三次作业
- c++作业3多分段函数求值,定期存款利息计算器,本月有几天?
- C++服务器学习之VIM的常用命令
- C++中虚函数工作原理和(虚)继承类的内存占用大小计算
- 第五届蓝桥杯决赛C\C++B组——出栈次序
- C++删除目录和复制目录函数
- C++ 传参数 拉起程序