c++中的字符串分割函数

2020-04-17  本文已影响0人  谁客户

'''

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;

}

'''

上一篇 下一篇

猜你喜欢

热点阅读