Desde que la conversión de cadena de Arduino 1.0 a mayúsculas no funciona

3

Intento ejecutar este código de ejemplo en mi Arduino, pero desde la versión 1.0 de Arduino IDE ya no funciona. El ejemplo se copia y se restaura principalmente de este ejemplo .

void setup() {
  Serial.begin(9600);
}
void loop() {
  // toUpperCase() changes all letters to upper case:
  String stringOne = "test";
  Serial.println(stringOne);
  stringOne = (stringOne.toUpperCase());
  Serial.println(stringOne);

  // do nothing while true:
  while(true);
}

Mensaje de error:

  

StringCaseChanges.cpp: En la función ‘void loop ()’:   StringCaseChanges.cpp: 12: 39: error: no hay coincidencia para ‘operador =’ en   'StringOne = stringOne.String :: toUpperCase ()'   /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:83:11:   nota: los candidatos son: String & String :: operator = (const String &)   /usr/share/arduino/hardware/arduino/cores/arduino/WString.h:84:11:   nota: String & String :: operator = (const char *)

En la página de ayuda se puede ver que:

  

A partir de 1.0, toUpperCase () modifica la cadena en su lugar en lugar de   devolviendo uno nuevo.

Sin embargo, no veo la razón por la que el código de ejemplo no se compila.

¿Puedes ayudarme?

¡Gracias!

// EDIT

OK, este funciona:     configuración vacía () {       Serial.begin (9600);     }

void loop() {
  // toUpperCase() changes all letters to upper case:
  String stringOne = "test";
  Serial.println(stringOne);
  stringOne.toUpperCase();
  Serial.println(stringOne);

  // do nothing while true:
  while(true);
}

Sin embargo, la página de ayuda debe cambiarse

    
pregunta Marcel

1 respuesta

5
  
    

A partir de 1.0, toUpperCase () modifica la cadena en su lugar en lugar de devolver una nueva.

  
     

Sin embargo, no veo la razón por la que el código de ejemplo no se compila.

Lo que hay que tener en cuenta en la página de ayuda es que dice "Devoluciones: ninguna". Como la invocación del método no devuelve nada, y no puedes asignar "nada" a una cadena, obtienes ese error (algo inútil).

La solución es simplemente omitir la asignación, ya que la invocación del método en sí ha hecho todo lo que esperaba hacer, y terminar con esta línea de código:

  

stringOne.toUpperCase ();

    
respondido por el Jay Kominek

Lea otras preguntas en las etiquetas