Тип string представляет собой текстовую строку – массив типа char, заканчивающийся символом “конец строки”.
Синтаксис
Переменная типа string может быть объявлена следующим образом (смотри примеры ниже):
- объявить массив символов без присваивания значений, как в случае str1;
- объявить массив символов и присвоить значения всем элементам, кроме последнего, компилятор Arduino автоматически добавит символ конца строки, как в случае str2;
- явно объявить символ конца строки, как в случае str3;
- инициализировать массив строковой константой в двойных кавычках. Компилятор автоматически задаст требуемый размер массива, равный количеству символов + символ конца строки, как в случае str4;
- инициализировать массив с явным заданием размера и присвоением строковой константы, как в случае str5;
- инициализировать массив с явным заданием дополнительного размера (с запасом), превышающего размер строковой константы при начальном присвоении, как в случае str6.
Примеры:
1 2 3 4 5 6 |
char str1 [8]; char str2 [10] = {'r', 'o', 'b', 'o', 'h', 'o', 'b', 'b', 'y'}; char str2 [10] = {'r', 'o', 'b', 'o', 'h', 'o', 'b', 'b', 'y', '\0'}; char str4 [ ] = "robohobby"; char str5 [10] = "robohobby"; char str6 [16] = "robohobby"; |
Символ “конец строки”
Строки заканчиваются нулевым символом (код 0 в таблице ASCII-кодов). Это позволяет функциям (таким как Serial.print()) выявлять окончание строки. В противном случае могут считаны байты из памяти, не принадлежащие требуемой переменной.
Выделяемый под строку массив символов должен иметь один дополнительный элемент для символа конца строки. Именно поэтому в примерах строки str2 и str5 должны иметь 10 символов, хотя в строке “robohobby” 9 символов — последнему элементу автоматически присваивается символ конца строки.
Однако возможно объявить строку без символа конца строки, например, объявить длину массива равной 9 для str2. Это приведет к некорректной работе функций, оперирующих строками.
Одинарные и двойные кавычки
Строки всегда объявляются внутри двойных кавычек (“robohobby”), а символы — внутри одинарных (‘R’).
Инициализация длинных строк
Длинные строки могут быть объявлены следующим образом:
1 2 3 |
char str [] = "Firts line" " second line" " third line"; |
Массивы строк
При работе с большими объемами текстовой информации, например в проектах с дисплеями, удобно использовать массивы строк. Так как строки сами по себе являются массивами, массив строк будет двумерным массивом.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
char* new_string []={"string 1", string 2", "string 3", "string 4"}; // массив указателей (необходимо для задания двумерного массива) void setup(){ Serial.begin(9600); // инициализация последовательного порта на скорости 9600 бод } void loop(){ for (byte i = 0; i < 4; i++){ Serial.println(new_string [i]); //вывод строки из массива строк в последовательный порт delay(500); // задержка полсекунды } } |
В данном примере объявляется и инициализируеся двумерный массив типа char. В функции setup() инициализируется последовательный порт на скорости 9600 бод. В функции loop() реализован алгоритм вывода строк из массива строк в последовательный порт (COM-порт).