0°

Arduino内置教程-字符串-字符串连接

因为和前面同样的原因而不能正确运行:在你开始连接不同数据类型前,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的串口监视器窗口。

Arduino内置教程-字符串-String Addition Operator

样例代码

这里是几个不同连接工作的例子:

// 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);
}
「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论