char * strsep (char **stringp, const char *delim)
{
char *begin, *end;
begin = *stringp;
if (begin == NULL)
return NULL;
if (delim[0] == '\0' || delim[1] == '\0')
{
char ch = delim[0];
if (ch == '\0')
end = NULL;
else
{
if (*begin == ch)
end = begin;
else if (*begin == '\0')
end = NULL;
else
end = strchr (begin + 1, ch);
}
}
else
/** Find the end of the token. */
end = strpbrk (begin, delim);
if (end)
{
/** Terminate the token and set *STRINGP past NUL character. */
*end++ = '\0';
*stringp = end;
}
else
/** No more delimiters; this is the last token. */
*stringp = NULL;
return begin;
}
// 以splite分割 获取 string ...到 vector
void GetMidBracket(vector<string>& StrVec,const char* pStr,char *splite)
{
if (splite==NULL||pStr==NULL)
{
return;
}
char *p=splite;
char *pRowBuf=(char *)pStr;
while(1)
{
p = strsep(&pRowBuf,splite);
if (p==NULL)
{
break;
}
if (p[0]=='\0')
continue;
StrVec.push_back(string(p));
}
}
//用法
const char[2048] pStr="1,2,3,haha,6";
vector<string> StrVec;
GetMidBracket(StrVec,pStr,",");
{
char *begin, *end;
begin = *stringp;
if (begin == NULL)
return NULL;
if (delim[0] == '\0' || delim[1] == '\0')
{
char ch = delim[0];
if (ch == '\0')
end = NULL;
else
{
if (*begin == ch)
end = begin;
else if (*begin == '\0')
end = NULL;
else
end = strchr (begin + 1, ch);
}
}
else
/** Find the end of the token. */
end = strpbrk (begin, delim);
if (end)
{
/** Terminate the token and set *STRINGP past NUL character. */
*end++ = '\0';
*stringp = end;
}
else
/** No more delimiters; this is the last token. */
*stringp = NULL;
return begin;
}
// 以splite分割 获取 string ...到 vector
void GetMidBracket(vector<string>& StrVec,const char* pStr,char *splite)
{
if (splite==NULL||pStr==NULL)
{
return;
}
char *p=splite;
char *pRowBuf=(char *)pStr;
while(1)
{
p = strsep(&pRowBuf,splite);
if (p==NULL)
{
break;
}
if (p[0]=='\0')
continue;
StrVec.push_back(string(p));
}
}
//用法
const char[2048] pStr="1,2,3,haha,6";
vector<string> StrVec;
GetMidBracket(StrVec,pStr,",");