[]
Оператор [] даёт прямой доступ к символу объекта String по индексу — аналог charAt(n), удобный для посимвольного разбора строк в цикле for.
Полная статья
Описание
Оператор [] даёт прямой доступ к любому символу объекта String по его порядковому номеру — индексу. Это удобно, когда нужно разобрать строку посимвольно: проверить конкретный символ, скопировать его в переменную или сравнить с другим значением.
Индексация начинается с нуля: первый символ строки находится по индексу 0, второй — по 1 и так далее.
Синтаксис
char thisChar = myString[n]
Параметры
myString: объект типаString, из которого извлекается символ.n: целочисленный индекс нужного символа (отсчёт с нуля).thisChar: переменная типаchar, в которую записывается результат.
Возвращает
Символ типа char, стоящий на позиции n в строке myString. Это полностью эквивалентно вызову charAt(n): оба способа дают одинаковый результат, выбирайте тот, что удобнее читать.
Где применяется
- Посимвольный разбор команды, пришедшей через
Serial: например, проверка первого символа для определения типа сообщения. - Валидация ввода: убедиться, что строка начинается с цифры или определённого префикса.
- Итерация по строке в цикле
forдля подсчёта вхождений символа или преобразования регистра. - Извлечение отдельных полей из простого текстового протокола с фиксированной структурой.
Практические замечания
- Всегда проверяйте, что индекс
nстрого меньшеmyString.length(). Если индекс равен длине строки или больше неё, вы читаете память за пределами объекта — результат непредсказуем и может привести к трудноуловимым ошибкам. - Строки в Arduino индексируются с нуля, поэтому последний символ находится по индексу
myString.length() - 1, а неmyString.length(). - Оператор
[]возвращает значение, но не ссылку: изменить символ строки через него нельзя. Для замены символа используйте методsetCharAt()или пересоберите строку. - Если строка пришла по
Serialи вы не уверены в её длине, сначала убедитесь, что данные полностью получены, и только потом обращайтесь к конкретным индексам. - При отладке удобно выводить найденный символ через
Serial.println(thisChar)— это поможет убедиться, что вы читаете именно тот символ, который ожидаете.