相關(guān)推薦
您可能對(duì)下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138544人學(xué)過

Arduino字符串——char數(shù)組和String類型
發(fā)布時(shí)間:2022-03-11 10:16 [ 我要自學(xué)網(wǎng)原創(chuàng) ] 發(fā)布人: 小劉2175 閱讀: 4395

在Arduino及C++程序中,通常有兩種定義字符串的方式: char數(shù)組 和 String類。

char數(shù)組
char數(shù)組是字符元素組成的數(shù)組,是最基本最常見的字符串定義方式。其定義方式如下:  

char a[] = "arduino";

需要注意的是,字符串末尾都有一個(gè)不可見的結(jié)束符 \0 。因此這個(gè)字符串雖然有7個(gè)字符,但其長(zhǎng)度為8字節(jié)。可以使用以下代碼進(jìn)行測(cè)試:  

char a[] = "arduino"; 
Serial.print("strlen: "); 
Serial.println( strlen(a) ); 
Serial.print("sizeof: "); 
Serial.println( sizeof(a) ); 

strlen可以測(cè)量字符串的長(zhǎng)度,sizeof可以返回變量占用的內(nèi)存大小。
可以看到,兩者輸出的結(jié)果是不一樣的,正是由于char數(shù)組有\0結(jié)束符造成的。

因此這個(gè)字符串也可以寫作:

char a[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};

但是如果寫作:

char a[7] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'}; 

則該變量只是一個(gè)char數(shù)組,由于沒有結(jié)束符,其不能被正確的識(shí)別成字符串,在實(shí)際運(yùn)行中如果作為字符串調(diào)用,將導(dǎo)致程序出錯(cuò)。

String類型
char數(shù)組是C語言中提供的字符串定義方式,在C++中更常使用的方式是String類型。其定義方式如下:  

String a = "arduino";

String類型除了能存儲(chǔ)字符串?dāng)?shù)據(jù)本身,還提供多種成員函數(shù),可以完成一些常用的字符串操作。

兩者區(qū)別 及 如何選擇
char數(shù)組是C語言中提供的字符串定義方式,在C++中更常使用的方式是String類型,String是現(xiàn)今大多數(shù)編程語言中都有一種數(shù)據(jù)類型,兩者在實(shí)際使用中差別較大,這里例舉一些常用操作方法:

char s[] = "Arduino"; 
String s2 = "Arduino"; 
// 獲取字符串長(zhǎng)度
int length = strlen(s); 
int length2 = s2.length(); 

// 截取子字符串
char substr[]; 
strncpy(substr, a + 4, 3)
String substr2 = s2.substring(4, 6); 

// 合并字符串
char str[] = strcat("i love ", s); 
String str2 = "i love " + s2

// 將字符串轉(zhuǎn)換為數(shù)值
String n="123.12"; 
long number = n.toInt(); 
float fnumber = n.toFloat(); 

char n2[]="123.12"; 
long number2 = atoi(n2); 
float fnumber2 = atof(n2); 

更多字符串操作方法,可見本書官網(wǎng):https://clz.me/arduino-book/more/

簡(jiǎn)單說:

  1. 使用char數(shù)組的方式雖然較為復(fù)雜,但可以更節(jié)省存儲(chǔ)空間;
  2. 在C++環(huán)境下,大部分情況推薦使用String類型的字符串;
  3. String中提供了很多字符串操作方法并且支持操作符,因此在一些情況下使用String類型相對(duì)char數(shù)組更簡(jiǎn)單一些。
Arduino視頻教程基礎(chǔ)篇
我要自學(xué)網(wǎng)商城 ¥40 元
進(jìn)入購(gòu)買
文章評(píng)論
0 條評(píng)論 按熱度排序 按時(shí)間排序 /350
添加表情
遵守中華人民共和國(guó)的各項(xiàng)道德法規(guī),
承擔(dān)因您的行為而導(dǎo)致的法律責(zé)任,
本站有權(quán)保留或刪除有爭(zhēng)議評(píng)論。
參與本評(píng)論即表明您已經(jīng)閱讀并接受
上述條款。
V
特惠充值
聯(lián)系客服
APP下載
官方微信
返回頂部
相關(guān)推薦
您可能對(duì)下面課程感興趣
Arduino視頻教程基礎(chǔ)篇

75小節(jié)已有138544人學(xué)過

分類選擇:
電腦辦公 平面設(shè)計(jì) 室內(nèi)設(shè)計(jì) 室外設(shè)計(jì) 機(jī)械設(shè)計(jì) 工業(yè)自動(dòng)化 影視動(dòng)畫 程序開發(fā) 網(wǎng)頁設(shè)計(jì) 會(huì)計(jì)課程 興趣成長(zhǎng) AIGC