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?

, 👍10


1 ответ


Лучший ответ:

11

Не надо. Вместо этого просто получите доступ к базовой строке C:

Serial.print(F("Name -> "));
Serial.println(founded_dev.getName().c_str());
,

Это работает для getName(), но не для некоторых других методов, таких как BLEAdvertisedDevice::getAddress() или BLEAdvertisedDevice::getServiceUUID(), @Tom Auger

@TomAuger Это потому, что они не возвращают строку. Первый возвращает BLEAddress, второй — BLEUUID. Пользовательские типы, которые потребуют специальной обработки., @Majenko

Для UUID вы можете использовать getServiceUUID().toString().c_str(), для адреса вы можете использовать: getAddress().toString().c_str()., @Majenko