C++中有一些号称很优雅的功能和方法……但是有的压根不能指定分隔符,有的依赖于stream所以分隔符只能是char,真是Ugly到家了……
比如stackoverflow中提到的诸多方法:http://stackoverflow.com/questions/236129/how-to-split-a-string-in-c
其实strtok是标准的c函数啊,而且现在重入问题也已经被解决了,通过保存指针的方式,为什么不喜欢用呢?
我一直认为,C++是最难用的语言,没有之一。
9月22日更新,处理了一个异常情况:如果分割出的字符串为空,NULL,需要额外处理!
#include <iostream> #include <string> void MidQuery::SplitString(const ::std::string str, const ::std::string delimiter, ::std::vector< ::std::string >& tokens) { char* tok = NULL; char* save = NULL; tok = strtok_r(const_cast<char*>(str.c_str()), delimiter.c_str(), &save); //Take Care if(tok!=NULL) { tokens.push_back( ::std::string(tok) ); } while((tok = strtok_r(NULL, delimiter.c_str(), &save))!=NULL) { //Take Care if(tok!=NULL) { tokens.push_back( ::std::string(tok)); } } }