Diferencia entre revisiones de «string»

De ArduWiki
Saltar a: navegación, buscar
(Parametros)
(Advertencia)
Línea 17: Línea 17:
  
 
== Advertencia ==
 
== Advertencia ==
* Tenga en cuenta, que las matrices de caracteres se conocen como [[string]] con s minúscula y las instancias de la '''clase String'' se denominan cadenas con S mayúscula.  
+
* Tenga en cuenta, que las matrices de caracteres se conocen como '''string''' con s minúscula y las instancias de la '''clase String''' se denominan cadenas con S mayúscula.  
* Tenga en cuenta que, las constantes de cadena especificadas con "comillas dobles" son tratadas como matrices de [[char]] y no como la clase String.
+
* Las constantes de cadena especificadas con "comillas dobles" son tratadas como matrices de [[char]] y no como la clase [[String]].
* No confundir con la clase [[String]], que forma parte del núcleo a partir de la versión 0019 y es necesario la instancia osea crear un objetos, pero la ventaja es que luego hay muchos métodos disponibles.
+
* Las variables tipo [[char]] deben ser definidos '''siempre''' usando comillas simples. Ver cadena1, cadena2 y cadena3 en ejemplo 1.
* Los datos tipo [[char]] deben ser definidos '''siempre''' usando comillas simples. Ver cadena1, cadena2 y cadena3 en ejemplo 1.
+
* Es posible crear cadenas como '''matriz''' de caracteres usando comillas dobles. Ver cadena4, cadena5 y cadena6 en ejemplo 1.
* Es posible crear cadenas como matriz de caracteres usando comillas dobles. Ver cadena4, cadena5 y cadena6 en ejemplo 1.
 
  
 
== Ejemplo 1==
 
== Ejemplo 1==

Revisión del 17:12 17 jul 2018

Descripción

En realidad string o cadena de caracteres no es un tipo de dato y se construye como una matriz de tipo char con terminación nula.

Las cadenas deben terminar con un carácter nulo (ASCII código 0). Esto permite que funciones como Serial.print() sepan donde terminan las cadenas. De lo contrario, seguirían leyendo los siguientes bits de memoria que ya no pertenece a esa cadena. Esto significa que la cadena tiene que tener espacio para un carácter más que el texto que desea que contenga.

Sintaxis

char variable[] = {valor1, valor2...};
char variable[] = "valor";
char* variable = "valor";

Parametros

variable
es el nombre de la matriz.
valor1
debe ir entre comillas simples. Cada uno.
valor
es una sola cadena de caracteres entre comillas dobles.

Advertencia

  • Tenga en cuenta, que las matrices de caracteres se conocen como string con s minúscula y las instancias de la clase String se denominan cadenas con S mayúscula.
  • Las constantes de cadena especificadas con "comillas dobles" son tratadas como matrices de char y no como la clase String.
  • Las variables tipo char deben ser definidos siempre usando comillas simples. Ver cadena1, cadena2 y cadena3 en ejemplo 1.
  • Es posible crear cadenas como matriz de caracteres usando comillas dobles. Ver cadena4, cadena5 y cadena6 en ejemplo 1.

Ejemplo 1

Posibilidades para la declaración de cadenas

  1. Declarar una matriz de caracteres inicializandola. Ver cadena1.
  2. Declarar una matriz de caracteres (con un carácter extra) y el compilador añadirá el carácter nulo requerido. Ver cadena2.
  3. Agregar explicitamente el caracter nulo. Ver cadena3.
  4. Inicializar una constante de cadena entre comillas; el compilador ajustará el tamaño de la matriz para adaptarse a la cadena y un carácter nulo de terminación. Ver cadena4.
  5. Incializar una matriz con un tamaño explícito y una constante de cadena. Ver cadena5.
  6. Inicializar la matriz, dejando espacio extra para una cadena larga. Ver cadena6.
char cadena1[15];
char cadena2[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o'};
char cadena3[8] = {'a', 'r', 'd', 'u', 'i', 'n', 'o', '\0'};
char cadena4[ ] = "arduino";
char cadena5[8] = "arduino";
char cadena6[15] = "arduino";

Ejemplo 2

En el código siguiente, el asterisco después del tipo de datos char "char *" indica que se trata de una matriz de punteros. Todos los nombres de matrices son en realidad punteros, así que esto es necesario para hacer una matriz de matrices. Los punteros son una de las partes más esotéricas de C ++ para que los principiantes puedan entender, pero no es necesario entender los punteros en detalle para usarlos de la manera aquí descrita.

char* fraces[] = {
   "Esta es la cadena 1", 
   "Esta es la cadena 2", 
   "Esta es la cadena 3",
   "Esta es la cadena 4", 
   "Esta es la cadena 5",
   "Esta es la cadena 6"
};
void setup(){
   Serial.begin(115200);
}
void loop(){
   for (byte i=0; i<6; i++){
      Serial.println(fraces[i]);
   }
   delay(500);
}


Ejemplo 3

Como convertir una matriz char en long.

#define DEBUG(a) Serial.println(a);
char* texto1 = "-12345";
char* texto2 = "-12.345";
 
void setup(){
   Serial.begin(9600);
   long valor1 = atol(texto1);
   DEBUG(valor1);
  
   float valor2 = atof(texto2);
   DEBUG(valor2);
}
 
void loop(){
   //Nada.
}

Ejemplo 4

En el siguiente ejemplo usuario pretende usar 4K de SRAM cuando Arduino UNO solo tiene 2K.

int var[2000];    //Error

Ejemplo 5

char nom = 'Arduino';      //Error
char nom[] = "Arduino";

Vea también