Arduino 字符串對象

2018-11-08 17:47 更新

在Arduino編程中使用的第二種類型的字符串是字符串對象。

什么是對象?

對象是一個包含數(shù)據(jù)和函數(shù)的構(gòu)造。字符串對象可以像變量一樣被創(chuàng)建并分配一個值或字符串。字符串對象包含函數(shù)(在面向?qū)ο缶幊蹋∣OP)中稱為“方法”),它們對字符串對象中包含的字符串?dāng)?shù)據(jù)進(jìn)行操作。

下面的草圖和解釋將清楚說明對象是什么,以及如何使用字符串對象。

例子

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

}

結(jié)果

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

創(chuàng)建字符串對象,并在草圖頂部分配一個值(或字符串)。

String my_str = "This is my string." ;

這將創(chuàng)建一個名為 my_str 的String對象,并為其賦值“This is my string.”。

這可以與創(chuàng)建變量并為其分配一個值(如整數(shù))相比較:

int my_var = 102;

以上草圖以下列方式工作。

(1)打印字符串

字符串可以像字符數(shù)組字符串一樣打印到串口監(jiān)視器窗口。

(2)將字符串轉(zhuǎn)換為大寫

創(chuàng)建的字符串對象my_str,有多個可以在其上操作的函數(shù)或方法。這些方法通過使用對象名稱后跟點(diǎn)運(yùn)算符(.),然后使用函數(shù)的名稱來調(diào)用的。

my_str.toUpperCase();

toUpperCase()函數(shù)對包含在類型為String的 my_str 對象中的字符串進(jìn)行操作,并將對象包含的字符串?dāng)?shù)據(jù)(或文本)轉(zhuǎn)換為大寫字符。String類包含的函數(shù)列表可以在Arduino字符串參考中找到。從技術(shù)上講,String被稱為一個類,用于創(chuàng)建String對象。

(3)覆蓋字符串

賦值運(yùn)算符用于將新字符串分配給 my_str 對象以替換舊字符串。

my_str = "My new string." ;

賦值運(yùn)算符不能用于字符數(shù)組字符串,僅適用于String對象。

(4)替換字符串中的單詞

replace()函數(shù)用于將傳遞給它的第二個字符串替換傳遞給它的第一個字符串。replace()是構(gòu)建在String類中的另一個函數(shù),因此可以在String對象my_str上使用。

(5)獲取字符串的長度

通過使用length()可以很容易地獲取字符串的長度。在示例草圖中,由length()返回的結(jié)果直接傳遞到Serial.println(),而不使用中間變量。

何時(shí)使用字符串對象

字符串對象比字符串字符數(shù)組更容易使用。該對象具有內(nèi)置函數(shù),可以對字符串執(zhí)行多個操作。

使用String對象的主要缺點(diǎn)是,它使用了大量的內(nèi)存,可能會很快耗盡Arduino的RAM內(nèi)存,這可能會導(dǎo)致Arduino掛起,崩潰或行為意外。如果Arduino上的草圖很小并限制了對象的使用,那么應(yīng)該沒有問題。

字符數(shù)組字符串更難使用,你可能需要編寫自己的函數(shù)來操作這些類型的字符串。其優(yōu)點(diǎn)是,你可以控制字符串?dāng)?shù)組的大小,因此你可以保持?jǐn)?shù)組很小來節(jié)省內(nèi)存。

你需要確保不要超出字符串?dāng)?shù)組邊界的范圍,而String對象沒有這個問題,只要有足夠的內(nèi)存供它操作,就會照顧到你的字符串邊界。在內(nèi)存不足時(shí),String對象可以嘗試在不存在的內(nèi)存中寫入,但絕不會在超出其操作的字符串末尾的地方寫入。

在哪里使用字符串

在本章中,我們學(xué)習(xí)了字符串,它們在內(nèi)存中的行為及其操作。

字符串的用法將在課程的下一部分進(jìn)行介紹,屆時(shí)我們將學(xué)習(xí)如何從串口監(jiān)視器窗口獲取用戶輸入并將輸入保存為字符串。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號