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