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

avatar
作者
筋斗云
阅读量:0

在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是线程安全的,所以这个程序可以在多线程环境中正常运行。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!