strtok_r
是一個 C 語言庫函數,用于將字符串分割成一系列的標記
#include<iostream>
#include <cstring>
std::string
時,請確保先將其轉換為 char
數組。例如:std::string input = "This is a sample string";
char *input_copy = new char[input.size() + 1];
std::strcpy(input_copy, input.c_str());
strtok_r
分割字符串。注意,strtok_r
會修改原始字符串,因此務必使用副本。char *saveptr;
char *token = std::strtok_r(input_copy, " ", &saveptr);
while (token != nullptr) {
// 處理 token
std::cout<< token<< std::endl;
// 獲取下一個 token
token = std::strtok_r(nullptr, " ", &saveptr);
}
input_copy
的內存:delete[] input_copy;
這樣,您就可以在 C++ 中安全地使用 strtok_r
函數處理字符串,同時避免內存泄漏和其他內存問題。
完整示例代碼:
#include<iostream>
#include <cstring>
int main() {
std::string input = "This is a sample string";
char *input_copy = new char[input.size() + 1];
std::strcpy(input_copy, input.c_str());
char *saveptr;
char *token = std::strtok_r(input_copy, " ", &saveptr);
while (token != nullptr) {
// 處理 token
std::cout<< token<< std::endl;
// 獲取下一個 token
token = std::strtok_r(nullptr, " ", &saveptr);
}
delete[] input_copy;
return 0;
}