Linux中的字符串分段函数strtok()函数是不可重入和线程不安全的,所以后来又提供了相应的线程安全和可重入的函数strtok_r()函数,然而在window系统中对应的是strtok_r()函数,为了详细了解函数的代码结构,我按照相应的功能,自己编写了一个类似功能的字符串分割函数,代码如下,在vs2012中能够正常运行,如有错误还请指正!
//实现strtok函数
class mystrtok
{
public:
char* operator()(char *src,const char *delim,char **save_ptr)
{
char *token=nullptr;
if(src==nullptr)
src=*save_ptr;
src+=_strspn(src,delim); //第一次src不为空,delim第一个不在s中的位置,_strspn(src,delim)返回0
if(*src=='\0')
return NULL;
token=src;
///*******??????
src=_strpbrk(src,delim); //返回最早出现在src中的位置后的字符串,包括自身
if(src==NULL)
{
*save_ptr=_strchr(token,'\0');
}
else
{
*src='\0