Character Constants
Các ký tự như các phần tử của chuỗi trong MQL5 là các chỉ mục trong bộ ký tự Unicode. Chúng là các giá trị thập lục phân có thể được chuyển thành số nguyên và có thể được thao tác bằng các phép toán số nguyên như cộng và trừ.
Bất kỳ ký tự đơn nào trong dấu ngoặc kép hoặc mã ASCII thập lục phân của một ký tự như '\x10
' là hằng số ký tự và thuộc kiểu ushort
. Ví dụ, một bản ghi thuộc kiểu '0
' là giá trị số 30
, tương ứng với chỉ số không trong bảng ký tự.
Ví dụ:
void OnStart()
{
//--- xác định character constants
int symbol_0='0';
int symbol_9=symbol_0+9; // nhận ký tự '9'
//--- giá trị đầu ra của hằng số
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);
//--- nhập hằng số vào một chuỗi
string test="";
StringSetCharacter(test,0,symbol_0);
StringSetCharacter(test,1,symbol_9);
//--- đây là hình dạng chúng trông thế nào trong một chuỗi
Print(test);
}
Dấu gạch chéo ngược (\
) là ký tự điều khiển cho trình biên dịch khi xử lý các chuỗi không đổi và hằng ký tự trong văn bản nguồn của chương trình. Một số ký hiệu, ví dụ như dấu ngoặc đơn ('
), dấu ngoặc kép ("
), dấu gạch chéo ngược (\
) và ký tự điều khiển có thể được biểu diễn dưới dạng kết hợp các ký hiệu bắt đầu bằng dấu gạch chéo ngược (\
), theo bảng bên dưới:
Tên ký tự | Mã hoặc hình ảnh ghi nhớ | Ghi vào MQL5 | Giá trị số |
---|---|---|---|
new line (line feed) | LF | '\n' | 10 |
horizontal tab | HT | '\t' | 9 |
carriage return | CR | '\r' | 13 |
backslash | \ | '\\' | 92 |
single quote | ` | \' | 39 |
double quote | " | \" | 34 |
hexadecimal code | hhhh | '\xhhhh' | 1 đến 4 ký tự thập lục phân |
decimal code | d | '\d' | số thập phân từ 0 đến 65535 |
Nếu dấu gạch chéo ngược được theo sau bởi một ký tự khác với các ký tự được mô tả ở trên thì kết quả là undefined
.
VD:
void OnStart()
{
//--- khai báo character constants
int a='A';
int b='$';
int c='©'; // code 0xA9
int d='\xAE'; // code of the symbol ®
//--- đầu ra in hằng số
Print(a,b,c,d);
//--- thêm một ký tự vào chuỗi
string test="";
StringSetCharacter(test,0,a);
Print(test);
//--- thay thế một ký tự trong một chuỗi
StringSetCharacter(test,0,b);
Print(test);
//--- thay thế một ký tự trong một chuỗi
StringSetCharacter(test,0,c);
Print(test);
//--- thay thế một ký tự trong một chuỗi
StringSetCharacter(test,0,d);
Print(test);
//--- biểu thị ký tự dưới dạng số
int a1=65;
int b1=36;
int c1=169;
int d1=174;
//--- thêm một ký tự vào chuỗi
StringSetCharacter(test,1,a1);
Print(test);
//--- thêm một ký tự vào chuỗi
StringSetCharacter(test,1,b1);
Print(test);
//--- thêm một ký tự vào chuỗi
StringSetCharacter(test,1,c1);
Print(test);
//--- thêm một ký tự vào chuỗi
StringSetCharacter(test,1,d1);
Print(test);
}
Như đã đề cập ở trên, giá trị của hằng ký tự (hoặc biến) là một chỉ mục trong bảng ký tự. Chỉ mục là một số nguyên, nó có thể được viết theo nhiều cách khác nhau.
void OnStart()
{
//---
int a=0xAE; // the code of ® corresponds to the '\xAE' literal
int b=0x24; // the code of $ corresponds to the '\x24' literal
int c=0xA9; // the code of © corresponds to the '\xA9' literal
int d=0x263A; // the code of ☺ corresponds to the '\x263A' literal
//--- show values
Print(a,b,c,d);
//--- thêm một ký tự vào chuỗi
string test="";
StringSetCharacter(test,0,a);
Print(test);
//--- thay thế một ký tự trong một chuỗi
StringSetCharacter(test,0,b);
Print(test);
//--- thay thế một ký tự trong một chuỗi
StringSetCharacter(test,0,c);
Print(test);
//--- thay thế một ký tự trong một chuỗi
StringSetCharacter(test,0,d);
Print(test);
//--- codes of suits
int a1=0x2660;
int b1=0x2661;
int c1=0x2662;
int d1=0x2663;
//--- add a character of spades
StringSetCharacter(test,1,a1);
Print(test);
//--- add a character of hearts
StringSetCharacter(test,2,b1);
Print(test);
//--- add a character of diamonds
StringSetCharacter(test,3,c1);
Print(test);
//--- add a character of clubs
StringSetCharacter(test,4,d1);
Print(test);
//--- Ví dụ về ký tự chữ trong một chuỗi
test="Queen\x2660Ace\x2662";
printf("%s",test);
}