C++ strtok()
发布网友
发布时间:2024-10-06 15:23
我来回答
共1个回答
热心网友
时间:2024-12-13 06:31
C++ 标准库提供了对 C 语言 strtok 函数的支持,这个函数在字符串处理中扮演着重要角色。strtok 函数的基本用法是这样的:
cpp
char* strtok(char* str, const char* delimiters);
它的主要工作是接收两个参数:一个是待分割的字符串(str)指针,另一个是分隔符的字符串(delimiters)。首次调用时,str 指向待分割的字符串,后续调用则需要将 str 设置为 nullptr,以便从上次停止的地方继续分割。
例如,分割字符串 "Hello, World! This is a test." 时,可以按空格、逗号和句点操作。strtok 函数会将原始字符串修改为 null 终止,如果不希望修改原始字符串,可以使用 C11 的 strtok_s 或 C++ 的 std::strtok 和 std::string 作为替代。
为了存储分割后的子字符串,可以使用字符指针数组。如下面的示例所示:
cpp
char* str = "Hello, World! This is a test.";
const char* delimiters = " ,. ";
char* tokens[4]; // 假设最多4个子字符串
size_t token_count = 0;
while ((tokens[token_count] = strtok(nullptr, delimiters))) {
token_count++;
if (token_count == sizeof(tokens) / sizeof(tokens[0])) {
// 当数组已满,不再存储更多子字符串
break;
}
}
// 遍历并输出子字符串
for (size_t i = 0; i < token_count; i++) {
std::cout << tokens[i] << std::endl;
}
在使用时,确保原始字符串 str 在被修改前不会被销毁,因为它们共享同一内存区域。