Arduino - String 对象

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

什么是对象?

对象是包含数据和函数的构造。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;

草图以下列方式工作。

打印字符串

该字符串可以像字符串数组一样打印到 Serial Monitor 窗口。

将字符串转换为大写字母

创建的字符串对象 my_str 具有许多可在其上操作的函数或方法。通过使用对象名称后跟点运算符 .,然后使用要使用的函数的名称来调用这些方法。

my_str.toUpperCase();

toUpperCase() 函数操作包含在 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 对象的主要缺点是它使用大量内存并且可以快速耗尽 Arduinos RAM 内存,这可能导致 Arduino 挂起、崩溃或意外行为。如果 Arduino 上的草图很小并且限制了对象的使用,那么应该没有问题。

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

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

使用字符串的地方

在本章中,我们研究了字符串,它们在内存中的行为以及它们的操作。

本课程的下一部分将介绍字符串的实际用法,比如如何从串行监视器窗口获取用户输入并将输入保存在字符串中。