In Arduino, if you have a std::string
:
std::string str = "test";
you can’t directly print it – trying to do so leads to the following error messages:
src/main.cpp: In function 'void setup()': src/main.cpp:122:22: error: no matching function for call to 'HardwareSerial::println(std::__cxx11::string&)' Serial.println(cert); ^ In file included from /home/uli/.platformio/packages/framework-arduinoespressif32@src-76bf6cf11a70195daa934985b7bd68e2/cores/esp32/Stream.h:26, from /home/uli/.platformio/packages/framework-arduinoespressif32@src-76bf6cf11a70195daa934985b7bd68e2/cores/esp32/Arduino.h:166, from src/main.cpp:1: /home/uli/.platformio/packages/framework-arduinoespressif32@src-76bf6cf11a70195daa934985b7bd68e2/cores/esp32/Print.h:96:12: note: candidate: 'size_t Print::println(const __FlashStringHelper*)' size_t println(const __FlashStringHelper *); ^~~~~~~ /home/uli/.platformio/packages/framework-arduinoespressif32@src-76bf6cf11a70195daa934985b7bd68e2/cores/esp32/Print.h:96:12: note: no known conversion for argument 1 from 'std::__cxx11::string' {aka 'std::__cxx11::basic_string<char>'} to 'const __FlashStringHelper*' /home/uli/.platformio/packages/framework-arduinoespressif32@src-76bf6cf11a70195daa934985b7bd68e2/cores/esp32/Print.h:97:12: note: candidate: 'size_t Print::println(const String&)' size_t println(const String &s);
Solution:
You can use .c_str()
to convert it to a NUL-terminated char*
which can be printed directly:
Serial.println(str.c_str());