+=

Оператор += дописывает данные в конец объекта String, помогая собирать текст из нескольких частей без отдельного вызова concat().

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

Описание

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

Синтаксис

myString += data

Параметры

  • myString: объект String, к которому будут дописаны данные. Именно эта переменная изменяется после выполнения оператора.
  • data: то, что нужно добавить — другая строка, символ, целое число, число с плавающей точкой или любое значение, которое String умеет принять.

Возвращает

Оператор ничего не возвращает: строка изменяется на месте, без создания копии.

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

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

  • Сборка строки для вывода в Serial. Удобно добавлять метки и значения по одному: сначала название параметра, потом его значение, потом единицу измерения.
  • Формирование текстовых команд. Если протокол устройства требует строку из нескольких частей, их проще накапливать через +=, чем конкатенировать всё сразу.
  • Буферизация входящих символов. При чтении данных из Serial побайтово каждый символ добавляется к строке-буферу до прихода символа-терминатора.
  • Построение JSON или CSV-строк. Поля и разделители добавляются поочерёдно в одну переменную.

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

  • Каждый вызов += может вызывать перераспределение памяти в куче. Если строка будет длинной, заранее выделите под неё память с помощью reserve() — это снизит фрагментацию и ускорит работу.
  • Если исходную строку нужно сохранить без изменений, а результат получить в отдельной переменной, используйте + вместо +=.
  • Добавление числа (например, int или float) автоматически преобразует его в текстовое представление — так же, как это делает конструктор String().
  • На платах с малым объёмом RAM (Arduino Uno, Nano) частое использование String и += может привести к нехватке памяти. В критичных по ресурсам проектах рассмотрите работу с массивами char и функциями strcat()/snprintf().
  • Если после серии операций += строка ведёт себя неожиданно или обрезается, проверьте свободную память через freeMemory() (библиотека MemoryFree) — вероятно, куча переполнена.