說明
文本字符串可以用兩種方式表示。您可以使用 String 數據類型,它是 0019 版核心的一部分,或者您可以從 char 類型的數組和 null-terminate 中創建一個字符串。本頁說明了後一種方法。有關以更多內存為代價提供更多函數的 String 對象的更多詳細信息,請參閱String object 頁麵。
用法
以下所有內容都是字符串的有效聲明。
char Str1[15];
char Str2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char Str3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char Str4[] = "arduino";
char Str5[8] = "arduino";
char Str6[15] = "arduino";
聲明字符串的可能性
-
聲明一個字符數組,而不像在 Str1 中那樣初始化它
-
聲明一個字符數組(帶有一個額外的字符),編譯器將添加所需的空字符,如 Str2
-
顯式添加空字符 Str3
-
用引號中的字符串常量初始化;編譯器將調整數組大小以適應字符串常量和終止空字符 Str4
-
使用顯式大小和字符串常量 Str5 初始化數組
-
初始化數組,為更大的字符串 Str6 留出額外空間
空終止
通常,字符串以空字符(ASCII 代碼 0)結束。這允許函數(如 Serial.print()
)判斷字符串的結尾在哪裏。否則,他們將繼續讀取實際上不屬於字符串的後續內存字節。
這意味著您的字符串需要比您希望它包含的文本多一個字符的空間。這就是為什麽 Str2 和 Str5 需要為 8 個字符的原因,即使 "arduino" 隻有 7 個 - 最後一個位置會自動填充一個空字符。 Str4 將自動調整為八個字符,一個用於額外的空字符。在 Str3 中,我們自己明確地包含了空字符(寫成 '\0')。
請注意,可以有一個沒有最終空字符的字符串(例如,如果您將 Str2 的長度指定為 7 而不是 8)。這會破壞大多數使用字符串的函數,所以你不應該故意這樣做。但是,如果您發現某些行為異常(對不在字符串中的字符進行操作),則可能是問題所在。
單引號還是雙引號?
字符串總是在雙引號 ("Abc") 內定義,而字符總是在單引號 ('A') 內定義。
包長字符串
您可以像這樣包裝長字符串:
char myString[] = "This is the first line"
" this is the second line"
" etcetera";
字符串數組
在處理大量文本(例如帶有 LCD 顯示器的項目)時,設置字符串數組通常很方便。因為字符串本身就是數組,所以這實際上是一個二維數組的例子。
在下麵的代碼中,數據類型char
“char*” 後麵的星號表示這是一個“pointers” 的數組。所有的數組名實際上都是指針,所以這是創建數組數組所必需的。指針是初學者理解的 C++ 中比較深奧的部分之一,但在這裏沒有必要詳細理解指針才能有效地使用它們。
示例代碼
char *myStrings[] = {"This is string 1", "This is string 2", "This is string 3",
"This is string 4", "This is string 5", "This is string 6"
};
void setup() {
Serial.begin(9600);
}
void loop() {
for (int i = 0; i < 6; i++) {
Serial.println(myStrings[i]);
delay(500);
}
}
相關用法
- Arduino static用法及代碼示例
- Arduino sq()用法及代碼示例
- Arduino shiftOut()用法及代碼示例
- Arduino scope用法及代碼示例
- Arduino setWireTimeout()用法及代碼示例
- Arduino serialEvent()用法及代碼示例
- Arduino setup()用法及代碼示例
- Arduino switch...case用法及代碼示例
- Arduino short用法及代碼示例
- Arduino sizeof()用法及代碼示例
- Arduino long用法及代碼示例
- Arduino Arduino_EMBRYO_2 - setLengthXY()用法及代碼示例
- Arduino ~用法及代碼示例
- Arduino ArduinoBLE - bleDevice.advertisedServiceUuidCount()用法及代碼示例
- Arduino const用法及代碼示例
- Arduino Ethernet - server.begin()用法及代碼示例
- Arduino ArduinoBLE - BLEService()用法及代碼示例
- Arduino digitalWrite()用法及代碼示例
- Arduino ArduinoBLE - bleCharacteristic.subscribe()用法及代碼示例
- Arduino Servo - attach()用法及代碼示例
- Arduino write()用法及代碼示例
- Arduino Arduino_LSM9DS1 - readGyroscope()用法及代碼示例
- Arduino ArduinoSound - FFTAnalyzer.input()用法及代碼示例
- Arduino MKRGSM - gprs.attachGPRS()用法及代碼示例
- Arduino WiFiNINA - WiFi.config()用法及代碼示例
注:本文由純淨天空篩選整理自arduino.cc大神的英文原創作品 string。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。