+ (concatenation)
Оператор + склеивает несколько объектов String или совместимых значений в новую строку — результат нужно обязательно сохранить в переменную.
Полная статья
Описание
Оператор + позволяет склеить несколько строк или значений в один объект String. Важно понимать: исходные строки при этом остаются нетронутыми — результат нужно обязательно сохранить в переменную. Если просто написать myString1 + myString2 без присваивания, объединённая строка тут же исчезнет.
Оператор удобен, когда нужно собрать сообщение из нескольких частей: например, склеить метку и числовое значение датчика перед отправкой в Serial Monitor.
Синтаксис
myString3 = myString1 + myString2
Параметры
myString1: первый объектString— левая часть выражения.myString2: второй объектStringили любое значение, совместимое со строкой: число, символ, другая строка.myString3: переменная, в которую записывается итоговая строка.
Возвращает
Новый объект String, содержащий объединённый текст обоих операндов.
Где применяется
- Формирование читаемых сообщений для
Serial.println(): метка + значение датчика. - Сборка строк для отправки по UART, Bluetooth или Wi-Fi.
- Построение простых текстовых протоколов или команд.
- Динамическое формирование содержимого для дисплея LCD или OLED.
Практические замечания
- Каждый вызов оператора
+создаёт временный объектStringв куче. Если конкатенаций много и они выполняются часто, SRAM на платах с малым объёмом памяти (например, Uno) может фрагментироваться — это приводит к непредсказуемому поведению скетча. - Если строка собирается постепенно в цикле, лучше заранее выделить под неё память с помощью
reserve(): это снижает риск фрагментации. - Числа при конкатенации автоматически преобразуются в текстовое представление:
String("val=") + 42даст"val=42". - Не забывайте сохранять результат: выражение вида
myString1 + myString2без присваивания вmyString3не изменяет ни одну из исходных строк. - Если скетч начинает вести себя странно после долгой работы с конкатенацией, проверьте свободную память через
freeMemory()— скорее всего, проблема именно в фрагментации кучи.