Учебники

Arduino — струнный объект

Второй тип строки, используемый в программировании Arduino, — это String Object.

Что такое объект?

Объект — это конструкция, которая содержит как данные, так и функции. Объект String может быть создан как переменная и ему может быть присвоено значение или строка. Объект String содержит функции (которые в объектно-ориентированном программировании (ООП) называются «методами»), которые работают с строковыми данными, содержащимися в объекте String.

Следующий эскиз и объяснение прояснят, что такое объект и как используется объект String.

пример

void setup() { 
   String my_str = "This is my string.";
   Serial.begin(9600);

   // (1) print the string
   Serial.println(my_str);

   // (2) change the string to upper-case
   my_str.toUpperCase();
   Serial.println(my_str);

   // (3) overwrite the string
   my_str = "My new string.";
   Serial.println(my_str);

   // (4) replace a word in the string
   my_str.replace("string", "Arduino sketch");
   Serial.println(my_str);

   // (5) get the length of the string
   Serial.print("String length is: ");
   Serial.println(my_str.length());
}

void loop() { 

}

Результат

This is my string.
THIS IS MY STRING.
My new string.
My new Arduino sketch.
String length is: 22

Строковый объект создается и ему присваивается значение (или строка) в верхней части эскиза.

String my_str = "This is my string." ;

Это создает объект String с именем my_str и присваивает ему значение «Это моя строка».

Это можно сравнить с созданием переменной и присвоением ей значения, такого как целое число —

int my_var = 102;

Эскиз работает следующим образом.

Печать строки

Строка может быть напечатана в окне Serial Monitor точно так же, как строка массива символов.

Преобразовать строку в верхний регистр

Строковый объект my_str, который был создан, имеет ряд функций или методов, с которыми можно работать. Эти методы вызываются с использованием имени объекта, за которым следует оператор точки (.), А затем имя используемой функции.

my_str.toUpperCase();

Функция toUpperCase () работает со строкой, содержащейся в объекте my_str, которая имеет тип String, и преобразует строковые данные (или текст), которые содержит объект, в символы верхнего регистра. Список функций, содержащихся в классе String, можно найти в справочнике Arduino String. Технически String называется классом и используется для создания объектов String.

Перезаписать строку

Оператор присваивания используется для назначения новой строки объекту my_str, который заменяет старую строку

my_str = "My new string." ;

Оператор присваивания нельзя использовать со строками символьных массивов, но он работает только с объектами String.

Замена слова в строке

Функция replace () используется для замены первой передаваемой ей строки второй передаваемой ей строкой. replace () — это еще одна функция, встроенная в класс String и доступная для использования в объекте String my_str.

Получение длины строки

Получение длины строки легко сделать с помощью length (). В примере эскиза результат, возвращаемый функцией length (), передается непосредственно в Serial.println () без использования промежуточной переменной.

Когда использовать строковый объект

Объект String намного проще в использовании, чем строковый символьный массив. Объект имеет встроенные функции, которые могут выполнять ряд операций над строками.

Основным недостатком использования объекта String является то, что он использует много памяти и может быстро израсходовать оперативную память Arduinos, что может привести к зависанию, аварийному завершению работы или непредвиденному поведению Arduino. Если эскиз на Arduino маленький и ограничивает использование объектов, то проблем быть не должно.

Строки символьного массива сложнее использовать, и вам может потребоваться написать собственные функции для работы со строками такого типа. Преимущество заключается в том, что у вас есть контроль над размером создаваемых строковых массивов, поэтому вы можете сохранять их небольшими для экономии памяти.

Вам нужно убедиться, что вы не пишете за пределами границ массива строковыми массивами. У объекта String такой проблемы нет, и он позаботится о границах строки, если на нем достаточно памяти для работы. Объект String может попытаться записать в память, которая не существует, когда ему не хватает памяти, но никогда не будет записывать поверх конца строки, с которой он работает.

Где используются строки

В этой главе мы изучили строки, их поведение в памяти и их операции.

Практическое использование строк будет рассмотрено в следующей части этого курса, когда мы изучим, как получить пользовательский ввод из окна Serial Monitor и сохранить ввод в виде строки.