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

+= (append)

Оператор += дописывает данные в конец объекта String прямо на месте — удобно собирать строку по частям, не создавая лишних объектов.

Полная статья

Описание

Оператор += добавляет данные в конец объекта String, не создавая новой строки. Это удобно, когда нужно постепенно собирать строку из нескольких частей — например, формировать команду для Serial или накапливать показания датчика в одном буфере.

Главное отличие от +: оператор += изменяет саму переменную, а не возвращает новый объект. Исходная строка становится длиннее.

Синтаксис

myString += data

Параметры

  • myString — объект String, к которому нужно что-то дописать. Он изменяется напрямую.
  • data — то, что добавляется в конец: другой объект String, строковый литерал, символ (char), целое или дробное число. Arduino автоматически преобразует число в текстовое представление.

Возвращает

Ничего. Строка изменяется прямо на месте, никакого нового объекта не создаётся.

Где применяется

  • Сборка строки по частям перед отправкой через Serial.println().
  • Формирование CSV-строки из нескольких значений датчиков.
  • Накопление символов, приходящих побайтово из Serial.read().
  • Построение HTTP-запроса или AT-команды для GSM/Wi-Fi модуля.

Практические замечания

  • Каждый вызов += может вызывать перераспределение памяти в куче. Если заранее известна максимальная длина строки, вызовите reserve() — это снизит фрагментацию памяти и ускорит работу.
  • Если исходную строку нужно сохранить без изменений, а результат получить отдельно, используйте + — он создаёт новый объект.
  • При добавлении числа оно преобразуется в десятичную строку. Например, 42 станет "42". Если нужен другой формат (hex, фиксированная ширина), преобразуйте число вручную перед добавлением.
  • На платах с малым объёмом RAM (например, Uno с 2 КБ) активное использование String и оператора += может быстро исчерпать память. Следите за длиной строк и освобождайте их, когда они больше не нужны.
  • Если строка перестала обновляться или ведёт себя неожиданно, проверьте доступную память через freeMemory() (библиотека MemoryFree) — возможно, куча уже переполнена.