strtok_s是windows下的一个分割字符串安全函数,其函数原型如下:
char *strtok_s( char *strToken, const char *strDelimit, char **buf);
这个函数将剩余的字符串存储在buf变量中,而不是静态变量中,从而保证了安全性。在首次调用strtok_s这个功能时候会将开头的分隔符跳过然后返回一个指针指向strToken中的第一个单词,在这个单词后面茶插入一个NULL表示断开。多次调用可能会使这个函数出错,context这个指针一直会跟踪将会被读取的字符串。
第一次执行完之后,strToken指向了第一个字符串,继续执行之后也不会改变,buf存储的是调用完strtok_s剩下的字符串,最终会变成空;
函数实现入下:
char str[] = "921504;921506;921507;";
vector<char*> vec;
char* context = NULL;
char* tmpstr = strtok_s(str, patstr,&context);
while (tmpstr != NULL)
{
vec.push_back(tmpstr);
tmpstr = strtok_s(NULL, patternstr.c_str(),&context);
}
cout << str << " " << endl;
for (unsigned int i = 0; i < vec.size(); ++i)
{
cout << vec[i] << " ";
}