Главная chevron_right Переменные и константы chevron_right Типы данных chevron_right + (concatenation)

+ (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() — скорее всего, проблема именно в фрагментации кучи.