📜  C++ strtok()(1)

📅  最后修改于: 2023-12-03 14:39:53.309000             🧑  作者: Mango

C++ strtok()介绍

strtok() 是 C++ 中的一个函数,用于将一个字符串分解为一组字符串。

函数定义
char* strtok(char* str, const char* delim);

其中,str 是要分解的字符串,delim 则是分隔符字符串。该函数会返回分解出的字符串。

函数流程
  1. 第一次调用时,str 不为 NULL,且保存的字符串为 str
  2. strtok() 函数会搜索 str 的起始位置,并寻找分隔符(delim)的出现位置。
  3. 如果分隔符不存在,则返回 NULL;否则,将该位置的字符设为 '\0',并将该位置之前的子串作为返回值。同时,str 被更新为该位置之后的子串(这意味着调用 strtok() 的程序应该在第一次调用后将 str 设为 NULL,以便下一次调用可以从上一次调用的结果继续往下处理)。
  4. 重复步骤 2 和步骤 3,直到整个字符串被分解完毕。
举例说明
#include <iostream>
#include <cstring>

int main() {
    char str[] = "apple,banana,orange,grape";
    char* token = std::strtok(str, ",");
    while (token) {
        std::cout << token << std::endl;
        token = std::strtok(NULL, ",");
    }
    return 0;
}

上面的程序将字符串 "apple,banana,orange,grape" 按逗号分隔成了四个单词,并依次输出了这些单词。注意:因为每次调用 strtok() 都会修改原始字符串,因此需要使用一份保存副本。

总结
  • strtok() 是 C++ 中将字符串分解为一组字符串的常用函数。
  • 在第一次调用后,需要将 str 设为 NULL,以便下一次调用可以从上一次调用的结果继续往下处理。
  • 每次调用 strtok() 都会修改原始字符串,因此需要使用一份保存副本。