Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Строки chevron_right String Appending Operators: оператор += и метод concat()

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