Ja, ich halte die Arduino String Klasse, auch im Kontext dieses Threads, für keine gute Wahl und würde dem Fragesteller auch davon abraten.

Was echte C++ Strings angeht hängt die Verwendbarkeit vom Bord ab. Das hier
Code:
#include <string>

void setup() {
  std::string s = "Hallo";
}

void loop() {
}
kompiliert bei mir ohne Probleme
Der Sketch verwendet 8112 Bytes (3%) des Programmspeicherplatzes. Das Maximum sind 262144 Bytes.
Globale Variablen verwenden 3436 Bytes (5%) des dynamischen Speichers, 62100 Bytes für lokale Variablen verbleiben. Das Maximum sind 65536 Bytes.
Arduino 1.8.4 mit Teensyduino 1.39, Boardeinstellung Teensy 3.2 72 MHz Faster