Преобразование строки в массив символов
В моем проекте мне нужно преобразовать строку в массив символов. Из различных примеров я пришел к выводу, что функция toCharArray()
преобразует строку в массив символов. Но мне не удалось этого сделать. Ошибка заключается в следующем:
'a' не называет тип
Код, который я использую, таков:
String a = "45317";
char b[6];
a.toCharArray(b,6);
Ресурсы являются https://www.arduino.cc/en/Reference/StringToCharArray и http://forum.arduino.cc/index.php?topic=199362.0
@Tanmay Yerunkar, 👍2
Обсуждение2 ответа
Лучший ответ:
Если вы пытаетесь использовать метод а
в глобальном масштабе, это обречено на провал. Вы можете вызывать методы только внутри функций.
Если все, что вам нужно, - это массив символов с "45317" в нем, просто используйте:
char *b = "45317";
Если вы хотите преобразовать строку, созданную во время выполнения, в массив символов, то ваш текущий метод верен - вам просто нужно сделать это в нужном месте.
Существует встроенное преобразование, которое вернет базовое содержимое строки в виде массива символов, заканчивающегося нулем:
String foo = "Steve was here"
char *text = foo.c_str();
Это, вероятно, все, что вам нужно, если только вы не хотите копировать в буфер. В этом случае вы можете использовать стандартную библиотеку C для этого:
// Declare a buffer
char buf[100];
// Copy this string into it
String foo = "This is my string"
snprintf( buf, sizeof(buf)-1, "%s", foo.c_str() );
// Ensure we're terminated
buf[sizeof(buf)] = '\0';
(Вы можете предпочесть strcpy
, memcpy
и т. Д. snprintf
.)
1) c_str () “не является заменой " toCharArray ()": ваш первый пример не удалось скомпилировать с "_error: недопустимое преобразование из" const char*’ в " char*"_”. Конечно, если вам нужен только
const char *, то предпочтительнее использовать
c_str ()'. 2) С точки зрения размера кода, snprintf ()
- очень неэффективный способ копирования строки. 3) Нет необходимости вычитать один из "sizeof(buf)` во втором аргументе в" snprintf ()"., @Edgar Bonet
- Использование аналогового входа для чтения кнопки
- Можно ли использовать цифровые контакты в качестве выхода ШИМ?
- Bluetooth-модуль HC-05 не принимает AT-команды
- Объединение кода для нескольких датчиков в одной программе
- Использование модуля JYETech 2.4 Inch LCD Display Screen Module с Arduino?
- Может ли Arduino UNO постоянно хранить код?
- Проблемы с срабатыванием датчика PIR сами по себе
- Почему значение регистра чтения и записи гироскопа MPU6050 равно 0x08 для полной шкалы 500 градусов в секунду?
возможно, этот пример может вам помочь: https://stackoverflow.com/questions/68497443/convert-an-arduino-c-string-to-an-ansi-c-string-char-array-using-the-string, @Pirx