String Appending Operators: оператор += и метод concat()
Разбираемся, как использовать оператор += и метод concat() для добавления данных к строкам String в Arduino.
При работе со строками в Arduino часто нужно не просто склеить две строки, но и постепенно дописывать в них данные. Для этого есть два равнозначных инструмента: оператор += и метод concat(). Оба делают одно и то же — добавляют новые данные в конец существующей строки. Выбор между ними — исключительно вопрос стиля.
Точно так же, как можно склеивать строки с другими объектами через оператор StringAdditionOperator, оператор += и метод concat() позволяют дописывать к строке числа, символы, другие строки и прочие совместимые типы данных.
Два примера ниже дают одинаковый результат:
String stringOne = "A long integer: ";
// используем += для добавления переменной типа long к строке
stringOne += 123456789;
или:
String stringTwo = "A long integer: ";
// используем concat() для добавления переменной типа long к строке
stringTwo.concat(123456789);
В обоих случаях stringOne будет равна "A long integer: 123456789". Как и оператор +, эти инструменты очень удобны, когда нужно собрать длинную строку из нескольких кусочков данных.
Как это работает
Оператор += — это синтаксический сахар: запись stringOne += value полностью эквивалентна stringOne = stringOne + value, но короче и нагляднее. Метод concat() делает то же самое, но через вызов функции — кому-то такой стиль привычнее.
Оба способа поддерживают добавление:
- строк (
Stringиchar[]), - целых чисел (
int,long), - чисел с плавающей точкой (
float,double), - символов (
char), - булевых значений (
bool).
Практические замечания
- Каждое добавление к
Stringможет вызывать перевыделение памяти в куче. На платах с малым объёмом RAM (например, Arduino UNO с 2 КБ) при активном использованииStringвозможна фрагментация памяти. Если скетч работает нестабильно через долгое время — это первый кандидат на проверку. - Если производительность критична, рассмотрите работу с
char[]и функциямиstrcat()/snprintf()из стандартной библиотеки C. concat()возвращаетbool:true, если операция прошла успешно, иfalse, если памяти не хватило. Это удобно для отладки.
Типичные ошибки
- Попытка дописать к строке тип, который
Stringне поддерживает напрямую (например,unsigned longбез явного приведения), может дать неожиданный результат или ошибку компиляции. - Не путайте
+=дляStringи для числовых переменных — контекст важен.
Необходимое оборудование
Схема подключения
Дополнительные компоненты для этого примера не нужны. Достаточно подключить плату к компьютеру через USB и открыть монитор последовательного порта в Arduino IDE.

Схема подключения: плата Arduino UNO без дополнительных компонентов — результат работы скетча отображается в мониторе порта.
Код
Как проверить результат
Откройте монитор последовательного порта (Ctrl+Shift+M или через меню Инструменты → Монитор порта). Убедитесь, что скорость передачи данных совпадает с той, что указана в Serial.begin(). В окне монитора вы увидите собранную строку — например, "A long integer: 123456789". Если строка выводится корректно, оба способа добавления работают правильно.
Подробнее
Больше базовых примеров можно найти в разделе built-in examples.
Также рекомендуем заглянуть в language reference — подробный справочник по языку программирования Arduino.
Последнее обновление: 2015/08/11, SM