Arduino - Objeto de cadena

El segundo tipo de cadena que se utiliza en la programación de Arduino es el objeto String.

¿Qué es un objeto?

Un objeto es una construcción que contiene tanto datos como funciones. Un objeto String se puede crear como una variable y se le puede asignar un valor o una cadena. El objeto String contiene funciones (que se denominan "métodos" en la programación orientada a objetos (OOP)) que operan sobre los datos de cadena contenidos en el objeto String.

El siguiente esquema y explicación aclararán qué es un objeto y cómo se usa el objeto String.

Ejemplo

void setup() { 
   String my_str = "This is my string.";
   Serial.begin(9600);

   // (1) print the string
   Serial.println(my_str);

   // (2) change the string to upper-case
   my_str.toUpperCase();
   Serial.println(my_str);

   // (3) overwrite the string
   my_str = "My new string.";
   Serial.println(my_str);

   // (4) replace a word in the string
   my_str.replace("string", "Arduino sketch");
   Serial.println(my_str);

   // (5) get the length of the string
   Serial.print("String length is: ");
   Serial.println(my_str.length());
}

void loop() { 

}

Resultado

This is my string.
THIS IS MY STRING.
My new string.
My new Arduino sketch.
String length is: 22

Se crea un objeto de cadena y se le asigna un valor (o cadena) en la parte superior del boceto.

String my_str = "This is my string." ;

Esto crea un objeto String con el nombre my_str y le da un valor de "Esta es mi cadena".

Esto se puede comparar con la creación de una variable y asignarle un valor, como un número entero:

int my_var = 102;

El boceto funciona de la siguiente manera.

Imprimir la cadena

La cadena se puede imprimir en la ventana del Monitor serial como una cadena de matriz de caracteres.

Convertir la cadena a mayúsculas

El objeto de cadena my_str que se creó tiene una serie de funciones o métodos que se pueden operar en él. Estos métodos se invocan usando el nombre de los objetos seguido del operador de punto (.) Y luego el nombre de la función a usar.

my_str.toUpperCase();

los toUpperCase() La función opera en la cadena contenida en el my_strobjeto que es de tipo String y convierte la cadena de datos (o texto) que contiene el objeto en caracteres en mayúsculas. Se puede encontrar una lista de las funciones que contiene la clase String en la referencia de Arduino String. Técnicamente, String se denomina clase y se utiliza para crear objetos String.

Sobrescribir una cadena

El operador de asignación se utiliza para asignar una nueva cadena al my_str objeto que reemplaza la vieja cadena

my_str = "My new string." ;

El operador de asignación no se puede utilizar en cadenas de matriz de caracteres, pero solo funciona en objetos String.

Reemplazo de una palabra en la cadena

La función replace () se usa para reemplazar la primera cadena que se le pasa por la segunda cadena que se le pasa. replace () es otra función que está integrada en la clase String y, por lo tanto, está disponible para usar en el objeto String my_str.

Obtener la longitud de la cuerda

Obtener la longitud de la cadena se hace fácilmente usando length (). En el boceto de ejemplo, el resultado devuelto por length () se pasa directamente a Serial.println () sin usar una variable intermedia.

Cuándo usar un objeto de cadena

Un objeto String es mucho más fácil de usar que una matriz de caracteres de cadena. El objeto tiene funciones integradas que pueden realizar una serie de operaciones en cadenas.

La principal desventaja de usar el objeto String es que usa mucha memoria y puede agotar rápidamente la memoria RAM de Arduino, lo que puede hacer que Arduino se cuelgue, se bloquee o se comporte inesperadamente. Si un boceto en un Arduino es pequeño y limita el uso de objetos, entonces no debería haber problemas.

Las cadenas de matriz de caracteres son más difíciles de usar y es posible que deba escribir sus propias funciones para operar en este tipo de cadenas. La ventaja es que tiene control sobre el tamaño de las matrices de cadenas que crea, por lo que puede mantener las matrices pequeñas para ahorrar memoria.

Debe asegurarse de no escribir más allá del final de los límites de la matriz con matrices de cadenas. El objeto String no tiene este problema y se encargará de los límites de la cadena por usted, siempre que haya suficiente memoria para que funcione. El objeto String puede intentar escribir en una memoria que no existe cuando se queda sin memoria, pero nunca escribirá sobre el final de la cadena en la que está operando.

Dónde se utilizan cadenas

En este capítulo estudiamos sobre las cadenas, cómo se comportan en la memoria y sus operaciones.

Los usos prácticos de las cadenas se cubrirán en la siguiente parte de este curso cuando estudiemos cómo obtener la entrada del usuario desde la ventana del Monitor serial y guardar la entrada en una cadena.