Problème de typage de variable

Bonjour à tous j’ai un pb de typage pour une variable, c’est pour la fonction BLEservice::init(), voir la photo pour le détail de la fonction.

Du coup j’aimerais que mon nom soit dans une variable, qui peut changer avec une certaine fonction mais qui reste enregistré dans l’ESP32 même après un redémarrage, je sais pas si cela est possible.

Mais mon but premier et de pouvoir changer cette valeur :

Ma déclaration

std::string testlol = "lol";

Ma fonction qui est censé changé la valeur de ma variable

    testlol = mysettings_writed.substring(6, mysettings_writed.length());

Le problème est que je reçois une erreur (voir deuxième photo)

Je ne peux pas mettre ma variable en String sinon ça serait trop simple et étant débutant en Arduino je ne comprends pas l’histoire std:: et la différence entre string et String.

Merci à vous

test.png

La première image :
test.png

La seconde :

La différence entre les deux String : avec le s minuscule c'est un tableau de caractères, avec la majuscule c'est une classe qui se place 'au-dessus' de la précédente. Elle permet des actions plus simples, comme celle que tu as faite, grâce à un ensemble de méthodes, bien pratiques. Mais elle cause à long terme des problèmes de mémoire, une sorte de fragmentation. C'est assez peu visible sur ESP32

D'accord je comprends mieux la différence entre les deux par contre pourrais-tu modifier mon code pour que mon string que je récupère je puisse le "mettre" dans ma variable std::string s'il te plaît ?

Merci à toi

Bonjour,

Il faut convertir la String en C string ensuite la conversion en std::string est automatique

 testlol = mysettings_writed.substring(6, mysettings_writed.length()).c_str();

C’est le “.c_str()” qui fait la conversion