Возникли проблемы с функцией sprintf и строковым классом
в своем коде я использовал класс string для создания массива для хранения пунктов меню
String menu[2] = {{"Menu 1"}, {"Menu2"}};
Как преобразовать это в массивы символов и как их вызвать?
Example:
Serial.println(menu[0]);
@Faraz Ahmed, 👍1
Обсуждение1 ответ
Лучший ответ:
Создайте их как массивы символов следующим образом:
const char* menu[2] = {"Menu 1", "Menu 2"};
и использовать их следующим образом:
Serial.println(menu[0]);
Строго говоря, это массив char*
, а не массив char
. И вы должны обрабатывать «Меню 1» как const char*
, чтобы позволить компилятору запретить вам делать глупости. И избегайте предупреждения: ISO C++ запрещает преобразование строковой константы в 'char*' [-Wwrite-strings]
, @DataFiddler
Отредактировано для константы., @Delta_G
Это массив char*. И каждый из этих указателей указывает на массив символов, а не на строку. Моя точка зрения заключалась в том, чтобы различать массив символов и объект String., @Delta_G
Согласованный. Даже текст предупреждения называет "hello" строковой константой
. Но string
(строковые литералы, также известные как массив const char) и Arduino String Objects
настолько разные, что нам следует полностью избегать использования термина *string*., @DataFiddler
- Очень простая операция Arduino Uno Serial.readString()
- Как преобразовать строку в массив байтов
- Как отправить строку с подчиненного устройства Arduino с помощью SPI?
- Понимание того, почему следует избегать «String» и альтернативных решений
- Arduino: как записать значение переменной в текстовый файл и изменить его на SD-карте?
- Буфер char в String в Arduino UNO
- Сохранить начальный ноль HEX в строку RFID RC522 Arduino
- Разделение Serial.readString на массив строк
Похоже, вы ищете menu[0].c_str(), @KIIV
const char* меню[2] = {"Меню 1", "Меню2"};
, @JurajКстати, вы можете получить доступ к строке. Вы вызываете функцию. Вы не вызываете строку., @Delta_G