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()делает независимую копию.