我正在尝试为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/