Второй тип строки, используемый в программировании 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 и сохранить ввод в виде строки.