'''
char * strtok ( char * str, const char * delimiters );
'''
做华为笔试的时候,前两道都是字符串处理的题,自己拆得心烦,结束了翻官方文档时才发现已经提供了strtok函数来拆分字符串。。。
str是传入的需要拆分的字符串,而delimiters则是拆分的依据,在str中发现包含在delimiters的字符,都会被替换成'\0'。
第一次调用时,需要传入str,之后只需要把传入NULL即可,每次调用成功,返回被分割的第一个字符串指针,如果已经没有可以分割的字符串,则返回NULL。
如果我们想处理string,则需要调用string.c_str()或者string.data()先将string类型转换为const char*,然后再用const_cast去掉const。
因为strtok使用静态变量保存要被分割的字符串,所以它不是线程安全的。线程安全,要使用strtok_s。
'''
int main()
{
string s{"tom,lily,jerry"};
char* tmp = nullptr;
vector<string> vec;
tmp = strtok(const_cast<char*>(s.data()), ",");
while (tmp != nullptr){
vec.push_back(string(tmp, tmp + strlen(tmp)));
tmp = strtok_s(NULL, ",");
}
return 0;
}
'''
网友评论