c++ - Arduino - 将拆分字符串与另一个字符串进行比较

标签 c++ split serial-port arduino string-comparison

<分区>

我试图在 Arduino 中将分解的字符串与另一个字符串进行比较,但它不起作用。拆分后的字符串从串口读取。

首先,这些是我用来分解字符串的函数:

int count_delimiters(char str[], const char* delimiters) {
    int i, j, result = 0;
    for (i = 0; i < strlen(str); ++i) {
        for (j = 0; j < strlen(delimiters); ++j) {
            if (str[i] == delimiters[j]) {
                ++result;
            }
        }
    }
    return (result + 1);
}

char** split(char str[], const char* delimiters) {
    int result_size = count_delimiters(str, delimiters);
    int i = 0;
    char* result[result_size];
    char* pch = strtok(str, ",");

    while (pch != NULL)
    {
      result[i] = pch;
      pch = strtok(NULL, ",");
      ++i;
    }

    return result;
}

我尝试将展开的字符串与另一个字符串进行比较的部分如下所示:

char input_array[input.length()];
input.toCharArray(input_array, (input.length() + 1));
exploded = split(input_array, ",");

if ("$test" == exploded[0]) {
    Serial.println("match"); // This code is never reached.
}

当我在串行监视器中输入 $test,other 时,我希望打印出一个匹配项,但没有打印任何内容。如果我执行 Serial.println(exploded[0]); 它应该输出 $test 。我做错了什么?

我已经尝试寻找不可打印的字符,如 \r\n\0,但它没有它似乎不包含任何这些,因为当我检查“$test\r”或其他它仍然没有返回 true 时。

最佳答案

在这一行中:

if ("$test" == exploded[0])

使用 strcmp 而不是通过 == 进行比较。

关于c++ - Arduino - 将拆分字符串与另一个字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13388694/

相关文章:

c++ - 基于范围的 for 循环和 std::vector.push_back() 使程序崩溃

c++ - OpenDDS 和发布者存在的通知

Python属性错误: 'module' object has no attribute 'Serial'

c - C语言如何从COM口读取数据

C++——向私有(private)成员字段 std::vector 添加元素

c++ - 多态设计,模板作为抽象类

r - 使用 dplyr group_by : return a list of data frames 模拟 split()

java - 将表达式 String 拆分为 ArrayList

c - 使用另一个字符串作为分隔符将字符串分解为标记列表?

java - Arduino和Java之间的校验和函数