Tipos de caracteres

Los tipos de datos de caracteres están pensados para almacenar determinados caracteres (letras) con los que se forman cadenas (véase Cadenas). MQL5 tiene 4 tipos de caracteres: Dos de 1 byte (char, uchar) de tamaño y dos de 2 bytes (short, ushort) de tamaño. Los tipos prefijados con 'u' no llevan signo.

De hecho, los tipos de caracteres son enteros, ya que almacenan un código entero de un carácter de la tabla correspondiente: para char se trata de la tabla de caracteres ASCII (códigos 0-127); para uchar, de ASCII extendido (códigos 0-255); y para short/ushort, de la tabla Unicode (hasta 65535 caracteres en la versión sin signo). Por si es de su interés, ASCII es la abreviatura de American Standard Code for Information Interchange.

Para las cadenas MQL5 se utilizan caracteres ushort de 2 bytes. Los tipos uchar de 1 byte se utilizan normalmente para integrarse con programas externos al transferir los arrays de datos aleatorios que se empaquetan y desempaquetan en otros tipos según los protocolos aplicados, como por ejemplo para conectarse a una plataforma criptográfica.

Las constantes de caracteres se registran como letras encerradas entre comillas simples. No obstante, también puede utilizar la notación entera (véase Enteros) abordada anteriormente. Al mismo tiempo, el número entero debe estar dentro del rango de valores para el formato de 1 o 2 bytes.

Además, podemos utilizar la notación de secuencias de escape, que utilizan una barra invertida ('\') como primer carácter seguido de uno de los caracteres de control predefinidos y/o un código numérico. MQL5 admite las siguientes secuencias de escape:

  • \n - nueva línea
  • \r - retorno de carro
  • \t - tabulación
  • \\ - barra invertida
  • \" - cita doble
  • \' - comilla simple
  • \X o \x - prefijo para especificar posteriormente un código numérico en formato hexadecimal
  • \0 - prefijo para especificar posteriormente un código numérico en formato octal

Los métodos básicos de utilización de las constantes de los tipos de caracteres se indican en el script MQL5/Scripts/MQL5Book/p2/TypeChar.mq5.

void OnStart()
{
  char a1 = 'a';  // ok, a1 = 97, English letter 'a' code
  char a2 = 97;   // ok, a2 = 'a' as well
  char b = '£';   // warning: truncation of constant value, b = -93
  uchar c = '£';  // ok, c = 163, pound symbol code
  short d = '£';  // ok
  short z = '\0';    // ok, 0
  short t = '\t';    // ok, 9
  short s1 = '\x5c'; // ok, backslash code 92
  short s2 = '\\';   // ok, backslash as is, code 92 as well
  short s3 = '\0134';// ok, backslash code in octal form
}

Las variables a1 y a2 obtienen el valor del carácter 'a' (letra inglesa) de dos formas diferentes.

Se ha intentado registrar '£' en la variable b, pero su código, 163, está fuera del rango char (127); por lo tanto se «transforma» en -93 con signo (el compilador emite un aviso). Las variables de tipo uchar (c) y short (d) que le siguen perciben este código como normal.

Otras variables se inicializan utilizando secuencias de escape.

Los caracteres pueden procesarse con las mismas operaciones que los enteros (véase Expresiones).