C strtok_s函数

*爱你&永不变心* 提交于 2020-01-12 04:57:56

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] << " ";
	}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!