Arduino-字符串对象-系列9

  • 内容
  • 评论
  • 相关

Arduino中使用的第二种类型的字符串是字符串对象。何为字符串对象呢?

什么是字符串对象

字符串对象

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

我们通过下面的例子来理解和说明字符串对象是什么以及如何使用:

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

   // (1) 打印输出字符串
   Serial.println(my_str);

   // (2) 将字符串更改为大写
   my_str.toUpperCase();
   Serial.println(my_str);

   // (3) 重写字符串
   my_str = "My new string.";
   Serial.println(my_str);

   // (4) 替换字符串中的一个单词
   my_str.replace("string", "Arduino sketch");
   Serial.println(my_str);

   // (5) 获取字符串的长度
   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的字符串对象,并给它分配一个值为“This is my String .”。字符串对象可以像字符数组一样可以打印到串口监视器窗口。见示例代码(1)

将字符串转换为大写,创建的字符串对象 my_str 有许多可以对其进行操作的函数或方法。这些方法是通过使用对象名称后面跟着点操作符(.)和要使用的函数名称来调用的。“ my_str.toUpperCase(); ” toUpperCase() 函数的作用是:修改 my_str 对象中包含的字符串,该字符串类型为string,并将对象包含的字符串数据(或文本)转换为大写字符。String类包含的函数列表可以在 Arduino String reference中找到。从技术上讲,String被称为类,用于创建 String 对象。 见示例代码(2)

重写字符串, 赋值操作符(详见:Arduino-运算符-系列4)用于将一个新字符串赋值给需要替换的旧字符串的my_str对象,“ my_str = "My new string." ; ” 赋值运算符“ = ”不能用于字符数组,只能用于赋值字符串对象。见示例代码(3)

替换字符串中的单词,replace() 函数的作用是:用传递给它的第二个字符串"Arduino sketch"替换传递给它的第一个字符串"string"。replace()是String类中的一个函数,因此可以在String对象 my_str 上直接使用。 见示例代码(4)

获取字符串的长度,使用 length() 可以很容易的获得字符串长度。在示例中,length() 返回的结果可以直接传递给 Serial.println(),而不需要使用中间变量。

什么时候使用字符串对象

字符串对象相比字符串和字符数组更容易使用,它具有可以很多对字符串进行操作的内置函数。

使用字符串对象的主要缺点是它会占用了大量的内存,错误的使用可能导致Arduino RAM容量的很快耗尽,最终导致Arduino挂起、崩溃或其它意外发生。如果Arduino上的 sketch 很小,并且优化了字符串对象的使用,那么也没有太大的问题。

使用字符数组来操作字符串相对困难,你可能需要编写函数来操作字符数组内的字符串。但这样做的好处是可以控制所创建的字符数组的大小,可以很好的控制字符数组的体积从而节省内存。

需要注意的是,使用字符数组时,数组内容不要超出数组边界。字符串对象没有字符边界的问题,前提是有足够的内存来供它操作。