我正在尝试在字符串旁边打印一个整数,但它并没有真正解决问题并且让我感到困惑。
int cmdSeries = 3;
Serial.println("Series : " + cmdSeries);// That's where the problem occur
在visual basic中,我们习惯这样做:
Dim cmdSeries As Integer
Console.Writeline(""Series : {0}", cmdSeries)
所以我用Serial.println尝试了它,但是它返回了这个错误: 调用重载' println(const char [14],int&)'含糊不清
任何人都可以帮助我,我想在不使用任何库的情况下以干净的方式实现这一目标。
答案 0 :(得分:4)
Arduino String类和常规C字符串之间存在巨大差异。 第一个重载加法运算符,但几乎过度使用动态内存。主要是如果你使用类似的东西:
String sth = String("blabla") + intVar + "something else" + floatVar;
更好的是使用:
Serial.print("Series : ");
Serial.println(cmdSeries);
顺便说一下,这个字符串文字驻留在Flash和RAM内存中,所以如果你想强制只使用flash:
Serial.print(F("Series : "));
但仅适用于基于AVR
的Arduinos。如果你使用大量的文字,这个宏可以节省大量的RAM。
编辑: 有时我用这个:
template <class T> inline Print & operator<<(Print & p, const T & val) {
p.print(val);
return p;
}
// ...
Serial << F("Text ") << intVar << F("...") << "\n";
它分别打印每个部分,没有连接。
答案 1 :(得分:1)
尝试一下
int cmdSeries = 3;
Serial.println(String("Series : ") + cmdSeries);