sintassi String

Buonasera, stasera ho incontrato le String (con la S maiuscola) e sto facendo qualche esercizio per comprenderle al meglio. Leggendo la reference ho notato che negli esempi scrive così:

String stringTwo =  String("This is a string");                 // converting a constant string into a String object
String stringOne =  String(stringTwo + " with more");

.
lo String dopo l'uguale mi è sembrato però ridondante, come se ci pensassero le variabili String a cambiare il tipo e quindi ho provato a scrivere così:

String stringTwo =  "This is a string";                 // converting a constant string into a String object
String stringOne = stringTwo + " with more";

Nel monitor seriale il risultato è lo stesso, ma cambia qualcosa al livello di codice? Su internet vedo tutti tutorial scritti come nella reference, quindi direi di si, ma non ancora incontrato il caso che mi fa notare questa differenza. Grazie mille.

Nessuno?

Le possibili inizializzazioni sono 3 e a me personalmente piace di più la terza, fedele alla sintassi C++:

String s1 =  String("Stringa1");
String s2 = "Stringa2";
String s3("Stringa3");

Il primo e secondo caso sono simili, viene creato di nascosto un String e poi "copiato" a s1, cioè il secondo caso è uguale al primo solo le la cosa è evidenziata nella prima forma.
Nel terzo si tratta di chiamare direttamente il costruttore passandogli un parametro.
Credo però che il compilatore ottimizzi il codice generato in linguaggio macchina e per le tre forme crei lo stesso codice.

Grazie mille!!! :smiley: :smiley:

Se puoi, evita String. Usa l'allocazione dinamica e su una MCU con solo 2Kb di SRAM come Arduino Uno è facile incorrere in esaurimento della memoria a causa del fenomeno della frammentazione della memoria.
Se cerchi nel forum ne abbiamo parlato.
Impara ad usare le stringhe classiche del C, array/vettori di caratteri terminati da carattere speciale NULL ovvero '\0'