+= (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) — возможно, куча уже переполнена.