String

Buenos días, estoy tratando de comprender un poco como funciona “String”

Alguien puede decirme cual es la diferencia entre estas declaraciones:

String cad = String(100);
String readString;

La cosa es que estoy intentando ejecutar una parte de código que no me da buenos resultados con String readString:

 char c = cliente.read();
        cad = cad + c;
        Serial.print(c);

        if(c == '\n')
        {
          if (cad.lastIndexOf("dig") > -1) // si la variable cad contiene 'dig' hacer ...
          {
            pin = pinElegido(cad);
            int posicionPin;
            for (int i=0; i <digTotal; i++)
            {
              if (dig[i] == pin)
              {
                posicionPin = i;
                break;
              }
            }
}
}

La función pinElegido es:

int pinElegido(String cad)
{

    int pos_dig = cad.lastIndexOf("dig");
    int pos_igual = cad.lastIndexOf("=");
    char vpin1 = cad.charAt(pos_dig+3);
    char vpin2 = cad.charAt(pos_dig+4);
    if (vpin2 != '=')
    {
      vpin1 += vpin2;
    }
    
    int pinElegido = vpin1 - 48; //.toInt();
    return pinElegido;
}

Gracias.

Estas definiendo una variable de acuerdo a la clase String y luego pretendes usarla como char. Imposible

Siempre que tengas dudas, antes de preguntas usa google: Arduino String y te dará este resultado

Ahi tienes todas las maneras de usar y definir variables String.

Ahi dice
String thisString = String(13)

gives you the String "13". You can use other bases, however.
o sea que tu caso
String cad = String(100);
Define a cad como un String "100"

En el otro caso solo definiste readString como Clase String.

Lee todo el documento, ve los ejemplos y entederás que haces bien y que mal.