Главная chevron_right Уроки chevron_right Встроенные примеры chevron_right Строки chevron_right String Object Constructors: способы инициализации строк

String Object Constructors: способы инициализации строк

Узнайте, как инициализировать объекты класса String в Arduino разными способами и какой из них выбрать для вашей задачи.

Класс String object открывает широкие возможности для работы с текстом: добавление символов, объединение строк через конкатенацию, получение длины, поиск и замена подстрок. В этом уроке разберём все способы инициализации объектов String — от самых простых до нестандартных.

String stringOne = "Hello String";                      // использование константной String
String stringOne =  String('a');                        // преобразование константного char в String
String stringTwo =  String("This is a string");         // преобразование константной строки в объект String
String stringOne =  String(stringTwo + " with more");   // конкатенация двух строк
String stringOne =  String(13);                         // использование константного целого числа
String stringOne =  String(analogRead(0), DEC);         // использование int с указанием основания системы счисления
String stringOne =  String(45, HEX);                    // использование int с основанием (шестнадцатеричная система)
String stringOne =  String(255, BIN);                   // использование int с основанием (двоичная система)
String stringOne =  String(millis(), DEC);              // использование long с указанием основания системы счисления
String stringOne =  String(5.698, 3);                   // использование float с указанием числа десятичных знаков

Все показанные варианты — это корректные способы объявить объект String. В каждом случае вы получаете объект, который содержит последовательность символов и поддерживает полный набор методов класса String.

Чтобы увидеть результат каждого способа инициализации в действии, загрузите скетч на плату Arduino и откройте монитор последовательного порта в Arduino IDE. Сравните, что выводит каждый вызов println(), с объявлением, которое ему предшествует — это поможет сразу понять, какой результат даёт тот или иной конструктор.

Необходимое оборудование

Схема подключения

Дополнительных компонентов для этого примера не нужно. Достаточно подключить плату к компьютеру через USB и открыть монитор последовательного порта в Arduino IDE.

Схема подключения: плата Arduino UNO без дополнительных компонентов — всё взаимодействие происходит через Serial.

Код

Как это работает

Каждый вариант конструктора String принимает разные типы данных в качестве аргумента:

  • Строковый литерал ("Hello") — самый распространённый способ.
  • ЧислоString автоматически преобразует целое или дробное число в текстовое представление.
  • Символ (char) — создаёт строку из одного символа.
  • Другой объект String — создаёт копию.
  • Число с указанием основания — например, String(255, HEX) даст "ff", а String(255, BIN) — двоичную запись.

Эта гибкость особенно удобна, когда нужно формировать сообщения из данных разных типов перед отправкой через Serial.

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

  • Класс String динамически выделяет память в куче. На платах с малым объёмом ОЗУ (например, Arduino Uno с 2 КБ) частое создание и удаление строк может привести к фрагментации памяти и непредсказуемым сбоям. Для критичных по памяти проектов рассмотрите использование char[] и функций из <string.h>.
  • Инициализация через числовое значение с основанием (BIN, OCT, DEC, HEX) — удобный способ вывести число в нужном формате без дополнительных преобразований.
  • Если вы объявляете String без аргументов (String s;), вы получаете пустую строку. Это нормально, но убедитесь, что не обращаетесь к её символам до добавления данных.

Типичные ошибки

  • Путаница между String и char[]: функции, ожидающие const char*, не принимают объект String напрямую — используйте метод .c_str() для преобразования.
  • Переполнение памяти: если в цикле создавать новые объекты String, не освобождая старые, память постепенно заканчивается. Следите за этим при долгой работе устройства.
  • Числа с плавающей точкой: String(3.14) по умолчанию даёт "3.14", но точность ограничена. Для управления количеством знаков после запятой используйте String(3.14, 4) — это выведет четыре знака после точки.

Как проверить результат

После загрузки скетча откройте монитор последовательного порта (Ctrl+Shift+M или меню Инструменты → Монитор порта). Убедитесь, что скорость соответствует той, что задана в Serial.begin(). В окне монитора вы увидите результат каждого объявления строки — по одному на строку.

Дополнительные материалы

Больше базовых примеров вы найдёте в разделе built-in examples.

Подробное описание всех возможностей языка Arduino доступно в language reference.

Последнее обновление: 11.08.2015, SM