Costanti Carattere

I caratteri come elementi di un stringa in MQL5 sono indici nel set di caratteri Unicode. Sono valori esadecimali che possono essere espressi in numeri interi, e che possono essere manipolati da operazioni integer come addizione e sottrazione.

Qualsiasi carattere singolo tra virgolette o un codice esadecimale ASCII di un carattere '\x10' è un carattere costante ed è di tipo ushort. Ad esempio, un record di tipo '0' è un valore numerico 30, che corrisponde all'indice di zero nella tabella di caratteri.

Esempio:

voidOnStart()
  {
//--- definizione delle costanti carattere
   int symbol_0='0';
   int symbol_9=symbol_0+9; // ottengo simbolo '9'
//--- valori output delle costanti
   printf("In a decimal form: symbol_0 = %d,  symbol_9 = %d",symbol_0,symbol_9);
   printf("In a hexadecimal form: symbol_0 = 0x%x,  symbol_9 = 0x%x",symbol_0,symbol_9);
//--- inserire costanti in una stringa
   string test=""
   StringSetCharacter(test,0,symbol_0);
   StringSetCharacter(test,1,symbol_9);
//--- questo è ciò che sembrano in una stringa
   Print(test);
  }

Il backslash è un carattere di controllo per il compilatore quando si tratta di stringhe costanti e le costanti di caratteri nel testo sorgente di un programma. Alcuni simboli, per esempio un singolo apice ('), i doppi apici ("), backslash (\) e caratteri di controllo possono essere rappresentati come una combinazione di simboli che iniziano con un backslash (\), secondo la seguente tabella:

Nome del carattere

Codice mnemonico o immagine

Record in MQL5

Valore numerico

nuova linea (line feed)

LF

'\n'

10

tabulazione orizzontale  

HT

'\t'

9

ritorno a capo

CR

'\r'

13

backslash

\

'\\'

92

apice singolo  

'

'\''

39

virgolette o apice doppio  

"

'\"'

34

codice esadecimale

hhhh

'\xhhhh'

Da 1 a 4 caratteri esadecimali

codice decimale

d

'\d'

numero decimale da 0 a 65535

Se il backslash è seguito da un carattere diverso da quelli sopra descritti, il risultato risultato è indefinito.

Esempio

voidOnStart()
  {
//--- dichiarazione delle costanti carattere
   int a='A';
   int b='$';
   int c='©';      // codice 0xA9
   int d='\xAE';   // codice per il simbolo ®
//--- print output delle costanti
   Print(a,b,c,d);
//--- aggiungere un carattere alla stringa
   string test="";
   StringSetCharacter(test,0,a);
   Print(test);
//--- sostituire un carattere in una stringa
   StringSetCharacter(test,0,b);
   Print(test);
//--- sostituire un carattere in una stringa
   StringSetCharacter(test,0,c);
   Print(test);
//--- sostituire un carattere in una stringa
   StringSetCharacter(test,0,d);
   Print(test);
//--- rappresentare i caratteri come un numero
   int a1=65;
   int b1=36;
   int c1=169;
   int d1=174;
//--- aggiungere un carattere alla stringa
   StringSetCharacter(test,1,a1);
   Print(test);
//--- aggiungere un carattere alla stringa
   StringSetCharacter(test,1,b1);
   Print(test);
//--- aggiungere un carattere alla stringa
   StringSetCharacter(test,1,c1);
   Print(test);
//--- aggiungere un carattere alla stringa
   StringSetCharacter(test,1,d1);
   Print(test);
  }

Come è stato menzionato sopra, il valore di una costante (o variabile) carattere è un indice nella tabella dei caratteri. L' indice essendo un intero, esso può essere scritto in modi diversi.

voidOnStart()
  {
//--- 
   int a=0xAE;     // il codice di ® corrisponde al letterale '\xAE' 
   int b=0x24;     // il codice di $ corrisponde al letterale '\x24' 
   int c=0xA9;     // il codice di © corrisponde al letterale '\xA9' 
   int d=0x263A;   // il codice di ☺ corrisponde al letterale '\x263A'
//--- mostra valori
   Print(a,b,c,d);
//--- aggiungere un carattere alla stringa
   string test="";
   StringSetCharacter(test,0,a);
   Print(test);
//--- sostituire un carattere in una stringa
   StringSetCharacter(test,0,b);
   Print(test);
//--- sostituire un carattere in una stringa
   StringSetCharacter(test,0,c);
   Print(test);
//--- sostituire un carattere in una stringa
   StringSetCharacter(test,0,d);
   Print(test);
//--- codici di suits
   int a1=0x2660;
   int b1=0x2661;
   int c1=0x2662;
   int d1=0x2663;
//--- aggiungere il carattere di picche
   StringSetCharacter(test,1,a1);
   Print(test);
//--- aggiungere il carattere di cuori
   StringSetCharacter(test,2,b1);
   Print(test);
//--- aggiungere il carattere di quadri
   StringSetCharacter(test,3,c1);
   Print(test);
//--- aggiungere il carattere di bastoni
   StringSetCharacter(test,4,d1);
   Print(test);
//--- esempio di letterali carattere in una stringa
   test="Regina\x2660Ace\x2662";
   printf("%s",test);
  }

La rappresentazione interna di un carattere letterale è il tipoushort. Le costanti carattere possono accettare valori da 0 a 65535.

Vedi anche

StringSetCharacter(), StringGetCharacter(), ShortToString(), ShortArrayToString(), StringToShortArray()