Constantes Caractère
Les caractères comme éléments d'une chaîne de caractères en MQL5 sont des indices dans un ensemble de caractères Unicode. Ce sont des valeurs hexadécimales qui peuvent être converties en entiers, et qui peuvent être manipulées par des opérations telles que l'addition et la soustraction.
Tout caractère entre guillemets ou code ASCII hexadécimal d'un caractère comme '\x10' est une constante de caractère et est de type ushort. Par exemple, '0' est la valeur numérique 30, qui correspond à l'indice de zéro dans la table des caractères.
Exemple :
void OnStart()
{
//--- définit les constantes des caractères
int symbol_0='0';
int symbol_9=symbol_0+9; // récupère le symbole '9'
//--- affiche les valeurs des constantes
printf("Sous forme décimale : symbol_0 = %d, symbol_9 = %d",symbol_0,symbol_9);
printf("Sous forme hexadécimale : symbol_0 = 0x%x, symbol_9 = 0x%x",symbol_0,symbol_9);
//--- entre les constantes dans une chaîne
string test="";
StringSetCharacter(test,0,symbol_0);
StringSetCharacter(test,1,symbol_9);
//--- voici à quoi elles ressemblent dans une chaîne de caractères
Print(test);
}
|
Le backslash est un caractère de contrôle pour le compilateur lors de l'utilisation de chaînes constantes et de caractères constants dans le texte source d'un programme. Certains symboles, par exemple le guillemet simple ('), le guillemet double ("), le backslash (\) et les caractères de contrôle peuvent être représentés comme une combinaison de symboles commencant avec un backslash (\), selon le tableau ci-dessous :
|
|
|
|
nouvelle ligne (line feed)
|
LF
|
'\n'
|
10
|
tabulation horizontale
|
HT
|
'\t'
|
9
|
retour chariot
|
CR
|
'\r'
|
13
|
backslash
|
\
|
'\\'
|
92
|
guillemet simple
|
'
|
'\''
|
39
|
double guillemet
|
"
|
'\"'
|
34
|
code hexadecimal
|
hhhh
|
'\xhhhh'
|
de 1 à 4 caractères hexadécimaux
|
code décimal
|
d
|
'\d'
|
nombre décimal de 0 à 65535
|
Si un backslash est suivi d'un caractère autre que ceux décrits ci-dessus, le résultat est indéfini.
Exemple
void OnStart()
{
//--- déclare les constantes de caractères
int a='A';
int b='$';
int c='©'; // code 0xA9
int d='\xAE'; // code du symbole ®
//--- affiche les constantes
Print(a,b,c,d);
//--- ajoute un caractère à la chaîne de caractères
string test="";
StringSetCharacter(test,0,a);
Print(test);
//--- remplace un caractère dans une chaîne
StringSetCharacter(test,0,b);
Print(test);
//--- remplace un caractère dans une chaîne
StringSetCharacter(test,0,c);
Print(test);
//--- remplace un caractère dans une chaîne
StringSetCharacter(test,0,d);
Print(test);
//--- représente les caractères sous forme de nombre
int a1=65;
int b1=36;
int c1=169;
int d1=174;
//--- ajoute un caractère à la chaîne de caractères
StringSetCharacter(test,1,a1);
Print(test);
//--- ajoute un caractère à la chaîne de caractères
StringSetCharacter(test,1,b1);
Print(test);
//--- ajoute un caractère à la chaîne de caractères
StringSetCharacter(test,1,c1);
Print(test);
//--- ajoute un caractère à la chaîne de caractères
StringSetCharacter(test,1,d1);
Print(test);
}
|
Comme il a été mentionné ci-dessus, la valeur d'une constante de caractère (ou variable) est un indice dans la table des caractères. L'indice étant un entier, il peut être écrit de différentes façons.
void OnStart()
{
//---
int a=0xAE; // le code de ® correspond au littéral '\xAE'
int b=0x24; // le code de $ correspond au littéral '\x24'
int c=0xA9; // le code de © correspond au littéral '\xA9'
int d=0x263A; // le code de ☺ correspond au littéral '\x263A'
//--- affiche les valeurs
Print(a,b,c,d);
//--- ajoute un caractère à la chaîne de caractères
string test="";
StringSetCharacter(test,0,a);
Print(test);
//--- remplace un caractère dans une chaîne
StringSetCharacter(test,0,b);
Print(test);
//--- remplace un caractère dans une chaîne
StringSetCharacter(test,0,c);
Print(test);
//--- remplace un caractère dans une chaîne
StringSetCharacter(test,0,d);
Print(test);
//--- codes des cartes
int a1=0x2660;
int b1=0x2661;
int c1=0x2662;
int d1=0x2663;
//--- ajoute le caractère pique
StringSetCharacter(test,1,a1);
Print(test);
//--- ajoute le caractère coeur
StringSetCharacter(test,2,b1);
Print(test);
//--- ajoute le caractère carreau
StringSetCharacter(test,3,c1);
Print(test);
//--- ajoute le caractère trèfle
StringSetCharacter(test,4,d1);
Print(test);
//--- Exemple de littéraux de caractères dans une chaîne
test="Reine\x2660As\x2662";
printf("%s",test);
}
|
La représentation interne d'un littéral de caractère est de type ushort. Les constantes de caractères peuvent accepter des valeurs de 0 à 65535.
Voir aussi
StringSetCharacter(), StringGetCharacter(), ShortToString(), ShortArrayToString(), StringToShortArray()