说明
文本字符串可以用两种方式表示。您可以使用 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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。