之前使用string实现过一版字符串分割函数split,见文章《C++的string分割字符串split实现》。不过感觉实现的代码比较多,效率也就显得低了些。
今天发现C语言有一个函数,可以实现字符串分割,遂总结下,今后使用。因为代码更加简洁,所以比较喜欢。
先看看实现的效果图:
下面是函数的使用代码示例:
CString str = _T("hello world www cjjjs com");
vector<CString> list;
Split(_T(" "),str,list);
一个原始字符串,一个用于接收处理结果的容器。
Split函数声明如下:
void Split(CString seps,CString str,vector<CString>& list);
第一个参数为分割字符串,可以是一个字符,也可以是多个字符。第二个是原始字符串,第三个参数是接收处理结果的容器。
Split函数的源码如下:
void Split(CString seps,CString str,vector<CString>& list)
{
CString token = _tcstok(str.GetBuffer(), seps );
str.ReleaseBuffer();
while( !token.IsEmpty() )
{
list.push_back(token);
token = _tcstok( NULL, seps );
}
}
函数代码非常短小,比string版的代码少多了。看着舒服。如果你喜欢,可以随时查询这个文章复制代码使用。