C++中使用strtok_r进行多线程编程

   2024-09-30 5220
核心提示:在C++中,strtok_r函数是一个线程安全的字符串分割函数,它可以在多线程环境中使用,而不会影响其他线程的操作下面是一个使用str

在C++中,strtok_r函数是一个线程安全的字符串分割函数,它可以在多线程环境中使用,而不会影响其他线程的操作

下面是一个使用strtok_r进行多线程编程的示例:

#include<iostream>#include<string>#include<vector>#include<thread>#include <cstring>void tokenize(const std::string& input, char delimiter, std::vector<std::string>& tokens) {    char* saveptr;    char* cstr = new char[input.size() + 1];    std::strcpy(cstr, input.c_str());    char* token = strtok_r(cstr, &delimiter, &saveptr);    while (token != nullptr) {        tokens.push_back(token);        token = strtok_r(nullptr, &delimiter, &saveptr);    }    delete[] cstr;}void process_tokens(const std::string& input, char delimiter) {    std::vector<std::string> tokens;    tokenize(input, delimiter, tokens);    for (const auto& token : tokens) {        std::cout << "Token: "<< token<< std::endl;    }}int main() {    std::string input1 = "Hello,World,This,Is,A,Test";    std::string input2 = "Multithreaded,Programming,Example";    std::thread t1(process_tokens, input1, ',');    std::thread t2(process_tokens, input2, ',');    t1.join();    t2.join();    return 0;}

在这个示例中,我们创建了两个线程,每个线程都使用strtok_r函数来分割一个字符串。由于strtok_r是线程安全的,所以这个程序可以在多线程环境中正常运行。

 
举报打赏
 
更多>同类网点查询
推荐图文
推荐网点查询
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号