Arduino Преобразование std:string в String
Я работаю над проектом BLE с библиотекой espressif. И Он возвращает мне найденное устройство BLE.
std::string getManufacturerData();
std::string getName();
int getRSSI();
BLEScan* getScan();
Когда я хочу напечатать имя устройства в последовательный порт
BLEAdvertisedDevice founded_dev;
founded_dev=foundDevices.getDevice(0);
Serial.println("Name -> " + founded_dev.getName());
У меня такая ошибка
no matching function for call to 'HardwareSerial::println(std::__cxx11::basic_string<char>)'
Итак, как я могу преобразовать std:string в String в Arduino?
@BK52, 👍10
1 ответ
Лучший ответ:
▲ 11
Не надо. Вместо этого просто получите доступ к базовой строке C:
Serial.print(F("Name -> "));
Serial.println(founded_dev.getName().c_str());
,
@Majenko
Смотрите также:
- Новичок, изучающий Serial.readString()
- Как разделить входящую строку?
- Как вывести несколько переменных в строке?
- Очень простая операция Arduino Uno Serial.readString()
- форматирование строк в Arduino для вывода
- Создание форматированной строки (включая числа с плавающей запятой) в Arduino-совместимом C++
- Почему эта программа на C++ не может прочитать Serial.write() моего arduino?
- Использование StringStream в скетче Arduino
Это работает для getName(), но не для некоторых других методов, таких как
BLEAdvertisedDevice::getAddress()
илиBLEAdvertisedDevice::getServiceUUID()
, @Tom Auger@TomAuger Это потому, что они не возвращают строку. Первый возвращает BLEAddress, второй — BLEUUID. Пользовательские типы, которые потребуют специальной обработки., @Majenko
Для UUID вы можете использовать
getServiceUUID().toString().c_str()
, для адреса вы можете использовать:getAddress().toString().c_str()
., @Majenko