Os caracteres como elementos de uma string,em MQL5, são índices do conjunto de caracteres Unicode. Eles são valores hexadecimais que podem ser convertidos para inteiros, e que podem ser manipulados por operações com inteiros como adição e subtração.
Qualquer caractere único entre aspas simples ou um código hexadecimal ASCII de um caractere como '\x10' é um caractere constante e é do tipo ushort. Por exemplo, uma anotação do tipo '0' representa o valor numérico 30, que corresponde ao índice do zero na tabela de caracteres.
Exemplo:
void OnStart()
{
//--- define constantes de caracteres
int symbol_0='0';
int symbol_9=symbol_0+9; // obtém o símbolo '9'
//--- valores de saída de constantes
printf("Num formato decimal: symbol_0 = %d, symbol_9 = %d",symbol_0,symbol_9);
printf("Num formato hexadecimal: symbol_0 = 0x%x, symbol_9 = 0x%x",symbol_0,symbol_9);
//--- entrada de constantes em uma string
string test="";
StringSetCharacter(test,0,symbol_0);
StringSetCharacter(test,1,symbol_9);
//--- isso é como eles se apresentam em uma string
Print(test);
}
Uma barra invertida (\) é um caractere de controle para o compilador ao lidar com strings constantes e constantes caracteres no texto fonte de um programa. Alguns símbolos, por exemplo uma aspas simples ('), aspas duplas ("), barra invertida (\) e caracteres de controle podem ser representados como combinação de símbolos que começam com uma barra invertida (\), de acordo com a tabela abaixo:
Nome do Caractere
Código Mnemônico ou imagem
Anotação em MQL5
Valor Numérico
linha nova (line feed)
LF
'\n'
10
tab horizontal
HT
'\t'
9
retorno de carro
CR
'\r'
13
barra invertida
\
'\\'
92
aspas simples
'
'\''
39
aspas duplas
"
'\"'
34
código hexadecimal
hhhh
'\xhhhh'
1 a 4 caracteres hexadecimais
código decimal
d
'\d'
número decimal de 0 a 65535
Caso uma barra invertida seja seguida por outro caractere não descrito acima, o resultado é indefinido.
Como foi mencionado acima, o valor de uma constante caractere (ou variável) é o valor do índice na tabela de caracteres. Sendo o índice um inteiro, pode ser escrito de diferentes maneiras.