Главная chevron_right Переменные и константы chevron_right Типы данных chevron_right toCharArray()

toCharArray()

Метод toCharArray() копирует содержимое объекта String в массив символов char — удобно, когда нужно передать строку в функции, работающие с char[].

Полная статья

Описание

Метод toCharArray() позволяет перенести содержимое строкового объекта String в обычный массив char. Это нужно, когда вы работаете с функциями или библиотеками, которые принимают строку в стиле C — то есть указатель на массив символов, а не объект String.

Типичная ситуация: вы собрали строку из нескольких частей с помощью String, а затем хотите передать её в функцию, которая ожидает char[]. Именно для этого и существует toCharArray().

Синтаксис

myString.toCharArray(buf, len)

Параметры

  • myString: строка типа String, содержимое которой нужно скопировать.
  • buf: массив char, куда будут записаны символы. Должен быть объявлен заранее и иметь достаточный размер.
  • len: размер буфера buf — сколько символов можно записать. Тип данных: unsigned int.

Возвращает

Ничего. Результат записывается напрямую в переданный массив buf.

Где применяется

  • Передача строки в функции, работающие с char[], например в функции вывода на LCD-дисплей или в парсеры.
  • Запись строки в буфер перед отправкой по UART, SPI или I2C.
  • Преобразование собранного сообщения в формат, совместимый с библиотеками на чистом C.
  • Сохранение строки в массив фиксированного размера, например перед записью в EEPROM.

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

  • Размер буфера buf должен быть не меньше длины строки плюс один символ для нулевого терминатора '\0'. Если передать меньший размер, строка будет обрезана.
  • Метод сам добавляет нулевой терминатор в конец скопированных данных — беспокоиться об этом вручную не нужно.
  • Если len равно нулю или единице, в буфер ничего содержательного не запишется — только терминатор или пустой результат.
  • Чтобы узнать нужный размер буфера заранее, используйте метод myString.length() и прибавьте 1.
  • Не путайте toCharArray() с c_str(): последний возвращает указатель на внутренний буфер объекта String без копирования, но этот указатель становится недействительным при изменении строки. toCharArray() делает независимую копию.