当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Arduino string用法及代码示例


[数据类型]

说明

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