在ardiuno中把String变量#true#2a#3#转化为按照#分隔的数组, 然后再把数组第一个元素跟”true“进行对比

发布时间 2023-08-29 08:26:35作者: 隐形的喷火龙

在 Arduino 中,你可以使用 strtok() 函数将一个 String 变量按照指定的分隔符切割为多个子字符串,并将它们存储到一个数组中。然后,你可以使用 strcmp() 函数将数组的第一个元素与字符串 "true" 进行比较。

以下是一个示例,演示如何在 Arduino 中将 String 变量 str 按照 # 分隔符切割为数组,并将数组的第一个元素与字符串 "true" 进行比较:

String str = "#true#2a#3#";
char *tokens[4]; // 假设最多有 4 个子字符串

void setup() {
  Serial.begin(9600);
  
  char *token = strtok(const_cast<char*>(str.c_str()), "#");
  int i = 0;
  
  while (token != NULL) {
    tokens[i] = token;
    i++;
    token = strtok(NULL, "#");
  }

  // 将数组的第一个元素与字符串 "true" 进行比较
  if (strcmp(tokens[0], "true") == 0) {
    Serial.println("Match");
  } else {
    Serial.println("No match");
  }
}

void loop() {
  // 主循环
}

在上述示例中,我们首先定义了一个 String 变量 str,并初始化为 #true#2a#3#。

然后,我们定义了一个字符指针数组 tokens,用于存储切割后的子字符串。

在 setup() 函数中,我们使用 strtok() 函数将 str 转换为 const char* 类型,并按照 # 分隔符切割为多个子字符串,并将它们存储到 tokens 数组中。

然后,我们使用 strcmp() 函数将数组的第一个元素与字符串 "true" 进行比较。如果两个字符串相同,strcmp() 函数将返回 0,我们输出 "Match";否则,输出 "No match"。