C++中的stoken标记
时间: 2024-04-14 14:27:12 浏览: 85
在 C++ 中,`std::strtok()` 是一个函数,用于将字符串分割为一系列标记(tokens)。
`std::strtok()` 函数接受两个参数:要分割的字符串以及分隔符。它会将字符串按照分隔符进行切割,并返回第一个标记。之后,每次调用 `std::strtok()` 函数时,将传递 `NULL` 作为第一个参数,以获取下一个标记。
以下是一个使用 `std::strtok()` 的简单示例:
```cpp
#include <cstring>
#include <iostream>
int main() {
char str[] = "Hello, World! This is a test.";
char* token = std::strtok(str, " ,.!"); // 以逗号、空格和句号为分隔符
while (token != NULL) {
std::cout << token << std::endl;
token = std::strtok(NULL, " ,.!");
}
return 0;
}
```
在上述示例中,原始字符串 "Hello, World! This is a test." 被使用逗号、空格和句号作为分隔符进行切割。每次调用 `std::strtok()` 会返回一个标记,并将指针指向下一个标记。输出结果将是每个标记单独一行的形式。
需要注意的是,`std::strtok()` 是一个非线程安全的函数,它会修改传递给它的字符串。如果需要在多线程环境中使用,可以考虑使用 `std::strtok_r()` 或者 C++11 中的 `std::strtok()` 的替代方案,比如使用 `std::string` 类和 `std::istringstream` 进行字符串分割。
阅读全文