二进制'operator+' 'const char [35]'和'double'类型的操作数无效



我在arduino中遇到字符串问题。我知道我不能把这样的不同类型放在一起。我已经尝试了几次转换,但没有让它工作。

以下行是我收到消息"类型为'const char [35]'和'double'的无效操作数到二进制'运算符+'的地方">

sendString("Time: " + (micros () - PingTimer) * 0.001, 3 + " ms");

免责声明:这个问题非常相似,但在不同的堆栈交换站点上(答案值得怀疑(。


该问题可以简化为以下代码片段:

void setup() {
"hello" + 3.0;
}

它产生以下错误消息:

error: invalid operands of types 'const char [6]' and 'double' to binary 'operator+'

许多编程语言支持将字符序列"添加"在一起,C++不支持。这意味着您将需要使用一个表示字符序列并实现+运算符的类。

幸运的是,已经有这样一个类可以使用:String。例:

void setup() {
String("hello") + 3.0;
}

表达式从左到右计算,这意味着最左边的类型必须是String,换句话说:

String("a") + 1 + 2 + 3

被理解为:

((String("a") + 1) + 2) + 3

其中String("a") + 1是一个字符串,因此(String("a") + 1) + 2是,依此类推......

最新更新