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:
|
|
|
|
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()