Arduino 简明教程

Arduino - String Object

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

What is an Object?

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

以下草图和说明将明确说明什么是对象以及如何使用字符串对象。

Example

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() {

}

Result

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 的字符串对象,并为其赋予“This is my string.” 的值。

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

int my_var = 102;

草图按以下方式工作。

Printing the String

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

Convert the String to Upper-case

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

my_str.toUpperCase();

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

Overwrite a String

赋值运算符用于为替换旧字符串的 my_str 对象分配新字符串。

my_str = "My new string." ;

赋值运算符不能用于字符数组字符串,但仅适用于 String 对象。

Replacing a Word in the String

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

Getting the Length of the String

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

When to Use a String Object

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

使用字符串对象的主要缺点是它使用大量内存,并且可能会快速耗尽 Arduino 的 RAM 内存,这可能导致 Arduino 悬空、崩溃或行为异常。如果 Arduino 上的一个草图很小并限制对对象的使用的,那么应该没有问题。

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

使用字符串数组时,你需要注意不要超出数组范围的末尾。String 对象没有这个问题,它会处理字符串范围,只要有足够的内存供它操作即可。String 对象在内存不足时可能会尝试写入不存在的内存,但它永远不会覆盖它正在操作的字符串的末尾。

Where Strings are Used

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

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