释放双眼,带上耳机,听听看~!
因为和前面同样的原因而不能正确运行:在你开始连接不同数据类型前,stringThree 从没有得到一个初始化的值。
目录
简介
- 你可以用多种方法把字符串加在一起。这也叫字符串连接,而且它会由于你连接的字符串或者字符数组的长度,而导致原字符串变得更长。+运算符允许你来把字符串和另一个字符串,常量字符数组,ASCII,变量,或者常量字符等组合起来。
// adding a constant integer to a string:
stringThree = stringOne + 123;
// adding a constant long interger to a string:
stringThree = stringOne + 123456789;
// adding a constant character to a string:
stringThree = stringOne + 'A';
// adding a constant string to a string:
stringThree = stringOne + "abc";
// adding two Strings together:
stringThree = stringOne + stringTwo;
- 如果函数返回一个和上面说的数据类型相符的值,你可以用+运算符来把函数的结果加到字符串里。例如:
stringThree = stringOne + millis();
- 这是符合的值,因为millis()函数返回一个长整数,这是可以被加到字符串里的。你也可以这样做:
stringThree = stringOne + analogRead(A0);
- 因为analogRead()返回一个整数。当你要显示一个组合字符串(含数值和描述,用来显示串口通讯,LCD显示,以太网通讯,或者其他地方)时,字符串连接会很有用。
- 注意:你应该对连到一起的多个数据类型小心,因为你可能会得到一个出乎意料的结果。如:
int sensorValue = analogRead(A0);
String stringOne = "Sensor value: ";
String stringThree = stringOne + sensorValue;
Serial.println(stringThree);
- 结果是”Sensor Value: 402″,或者不管analogRead()的结果怎样,只是:
int sensorValue = analogRead(A0);
String stringThree = "Sensor value: " + sensorValue;
Serial.println(stringThree);
- 得到不可预测的结果是因为stringThree在你开始连接不同数据类型前从来没有得到一个初始值。
- 这里是另外一个例子,不合适的初始值会引起错误:
Serial.println("I want " + analogRead(A0) + " donuts");
- 这个不能编译,因为编译器不能正确操作运算符的优先度。另一方面,下面的例子可以编译,但不能运行出预期的结果:
int sensorValue = analogRead(A0);
String stringThree = "I want " + sensorValue;
Serial.println(stringThree + " donuts");
- 它因为和前面同样的原因而不能正确运行:在你开始连接不同数据类型前,stringThree 从没有得到一个初始化的值。
- 而最好的结果是,在你连接他们前,初始化你的字符串。
硬件要求
- Arduino or Genuino 开发板
电路
- 这个例子不需要连接额外的电路,除了你的开发板需要连接到你的电脑,并且打开Arduino IDE的串口监视器窗口。
样例代码
这里是几个不同连接工作的例子:
// declare three strings:
String stringOne, stringTwo, stringThree;
void setup() {
// initialize serial and wait for port to open:
Serial.begin(9600);
while (!Serial) {
; // wait for serial port to connect. Needed for native USB port only
}
stringOne = String("You added ");
stringTwo = String("this string");
stringThree = String();
// send an intro:
Serial.println("\n\nAdding strings together (concatenation):");
Serial.println();
}
void loop() {
// adding a constant integer to a string:
stringThree = stringOne + 123;
Serial.println(stringThree); // prints "You added 123"
// adding a constant long interger to a string:
stringThree = stringOne + 123456789;
Serial.println(stringThree); // prints "You added 123456789"
// adding a constant character to a string:
stringThree = stringOne + 'A';
Serial.println(stringThree); // prints "You added A"
// adding a constant string to a string:
stringThree = stringOne + "abc";
Serial.println(stringThree); // prints "You added abc"
stringThree = stringOne + stringTwo;
Serial.println(stringThree); // prints "You added this string"
// adding a variable integer to a string:
int sensorValue = analogRead(A0);
stringOne = "Sensor value: ";
stringThree = stringOne + sensorValue;
Serial.println(stringThree); // prints "Sensor Value: 401" or whatever value analogRead(A0) has
// adding a variable long integer to a string:
long currentTime = millis();
stringOne = "millis() value: ";
stringThree = stringOne + millis();
Serial.println(stringThree); // prints "The millis: 345345" or whatever value currentTime has
// do nothing while true:
while (true);
}