Тип string представляет собой текстовую строку – массив типа char, заканчивающийся символом “конец строки”.

Синтаксис

Переменная типа string может быть объявлена следующим образом (смотри примеры ниже):

  • объявить массив символов без присваивания значений, как в случае str1;
  • объявить массив символов и присвоить значения всем элементам, кроме последнего, компилятор Arduino автоматически добавит символ конца строки, как в случае str2;
  • явно объявить символ конца строки, как в случае str3;
  • инициализировать массив строковой константой в двойных кавычках. Компилятор автоматически задаст требуемый размер массива, равный количеству символов + символ конца строки, как в случае str4;
  • инициализировать массив с явным заданием размера и присвоением строковой константы, как в случае str5;
  • инициализировать массив с явным заданием дополнительного размера (с запасом), превышающего размер строковой константы при начальном присвоении, как в случае str6.

 

Примеры:

Символ “конец строки”

Строки заканчиваются нулевым символом (код 0 в таблице ASCII-кодов). Это позволяет функциям (таким как Serial.print()) выявлять окончание строки. В противном случае могут считаны байты из памяти, не принадлежащие требуемой переменной.

Выделяемый под строку массив символов должен иметь один дополнительный элемент для символа конца строки. Именно поэтому в примерах строки str2 и str5  должны иметь 10 символов, хотя в строке “robohobby” 9 символов — последнему элементу автоматически присваивается символ конца строки.

Однако возможно объявить строку без символа конца строки, например, объявить длину массива равной 9 для str2. Это приведет к некорректной работе функций, оперирующих строками.

Одинарные и двойные кавычки

Строки всегда объявляются внутри двойных кавычек (“robohobby”), а символы — внутри одинарных (‘R’).

Инициализация длинных строк

Длинные строки могут быть объявлены следующим образом:

Массивы строк

При работе с большими объемами текстовой информации, например в проектах с дисплеями, удобно использовать массивы строк. Так как строки сами по себе являются массивами, массив строк будет двумерным массивом.

Пример:

В данном примере объявляется и инициализируеся двумерный массив типа char. В функции setup() инициализируется последовательный порт на скорости 9600 бод. В функции loop() реализован алгоритм вывода строк из массива строк в последовательный порт (COM-порт).