Arduino - 字符串对象



Arduino编程中使用的第二种字符串是String对象。

什么是对象?

对象是一种包含数据和函数的构造。String对象可以像变量一样创建并赋值或赋予字符串。String对象包含函数(在面向对象编程 (OOP) 中称为“方法”),这些函数对String对象中包含的字符串数据进行操作。

下面的草图和解释将清楚地说明什么是对象以及如何使用String对象。

示例

void setup() { 
   String my_str = "This is my string.";
   Serial.begin(9600);

   // (1) print the string
   Serial.println(my_str);

   // (2) change the string to upper-case
   my_str.toUpperCase();
   Serial.println(my_str);

   // (3) overwrite the string
   my_str = "My new string.";
   Serial.println(my_str);

   // (4) replace a word in the string
   my_str.replace("string", "Arduino sketch");
   Serial.println(my_str);

   // (5) get the length of the string
   Serial.print("String length is: ");
   Serial.println(my_str.length());
}

void loop() { 

}

结果

This is my string.
THIS IS MY STRING.
My new string.
My new Arduino sketch.
String length is: 22

在草图的顶部创建字符串对象并为其赋值(或字符串)。

String my_str = "This is my string." ;

这将创建一个名为my_str的String对象,并为其赋予值“This is my string.”。

这可以与创建变量并为其赋值(例如整数)进行比较:

int my_var = 102;

草图的工作方式如下。

打印字符串

字符串可以像字符数组字符串一样打印到串口监视器窗口。

将字符串转换为大写

创建的字符串对象my_str具有一些可以对其进行操作的函数或方法。这些方法是通过使用对象的名称后跟点运算符 (.),然后是所要使用的函数的名称来调用的。

my_str.toUpperCase();

toUpperCase()函数操作包含在类型为String的my_str对象中的字符串,并将对象包含的字符串数据(或文本)转换为大写字符。可以在Arduino String参考中找到String类包含的函数列表。从技术上讲,String称为类,用于创建String对象。

覆盖字符串

赋值运算符用于为my_str对象分配一个新字符串,以替换旧字符串

my_str = "My new string." ;

赋值运算符不能用于字符数组字符串,而只能用于String对象。

替换字符串中的单词

replace()函数用于将传递给它的第一个字符串替换为传递给它的第二个字符串。replace()是内置于String类的另一个函数,因此可用于String对象my_str。

获取字符串的长度

通过使用length()可以轻松获得字符串的长度。在示例草图中,length()返回的结果直接传递给Serial.println(),无需使用中间变量。

何时使用String对象

String对象比字符串字符数组更容易使用。该对象具有内置函数,可以对字符串执行许多操作。

使用String对象的主要缺点是它使用大量内存,并且可以快速耗尽Arduino的RAM内存,这可能会导致Arduino挂起、崩溃或行为异常。如果Arduino上的草图很小并且限制了对象的使用,那么应该不会出现问题。

字符数组字符串更难使用,您可能需要编写自己的函数来操作这些类型的字符串。优点是您可以控制所创建字符串数组的大小,因此您可以使数组保持较小以节省内存。

您需要确保不会使用字符串数组写入数组边界之外。String对象没有这个问题,它会为您处理字符串边界,前提是有足够的内存供其操作。String对象在内存不足时可能会尝试写入不存在的内存,但它永远不会写入其正在操作的字符串的末尾之外。

字符串的使用位置

在本章中,我们学习了字符串、它们在内存中的行为及其操作。

字符串的实际用途将在本课程的下一部分中介绍,届时我们将学习如何从串口监视器窗口获取用户输入并将输入保存在字符串中。

广告