我正在尝试为Arduino写一个join方法:

#define ARG_DELIMITER ','

  String join(const String strs[], const int len) {
    String result = "";
    for (int i = 0; i < len; i++) {
      result += strs[i] + ARG_DELIMITER;
      Serial.println(result);
    }
    return result.substring(0, result.length() - 1);
  }

调用代码在loop()中:
const String args[3] = {"foo", "bar", "baz"};
Serial.println(SlaveTalk.join(args, 3));

打印以下内容:
foo
foo
foo
fo

只要程序运行,其后是空字符串。

我在这里做错了什么?

最佳答案

这条线

const String args[3] = {"foo", "bar", "baz"};

给你弦
"foo\0" "bar\0" "baz\0"

其中\ 0是NULL字符。因此,当您进行合并时,我希望您最终得到:
"foo\0bar\0baz\0"

打印从零开始,这就是为什么您看到foo 3次的原因。在return语句中,长度为3“foo”,减去1则为“fo”

关于c++ - Arduino:字符串连接?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5781559/

10-12 22:47
查看更多