Nếu chỉ viết:
char c = 'A'; cout << int(c);
thì trong thực tế hằng ngày, câu lệnh này không có nhiều ý nghĩa.
Điều quan trọng không phải là học thuộc câu lệnh này, mà là hiểu khi nào mã ký tự có ích.
char c = 'A';
if (c >= 'A' && c <= 'Z') {
cout << "Chữ hoa";
}
Ở đây ta đang sử dụng thứ tự của các ký tự:
A < B < C < ... < Z
Nhờ vậy, ta có thể kiểm tra xem một ký tự có phải là chữ cái in hoa hay không.
char c = 'b'; char hoa = c - 'a' + 'A'; cout << hoa;
Kết quả:
B
Giải thích:
'b' - 'a' = 1 'A' + 1 = 'B'
Nghĩa là chữ b cách chữ a một vị trí, nên chữ hoa tương ứng cũng là B.
for (char c = 'A'; c <= 'Z'; c++) {
cout << c << " ";
}
Kết quả:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Đây là một cách sử dụng thứ tự của các ký tự rất hữu ích.
char c = '5';
if (c >= '0' && c <= '9') {
cout << "Đây là chữ số";
}
Vì các ký tự từ 0 đến 9 nằm liên tiếp trong bảng mã ký tự.
string s = "abcABC";
int dem = 0;
for (char c : s) {
if (c >= 'A' && c <= 'Z') {
dem++;
}
}
cout << dem;
Kết quả:
3
Chương trình đếm được 3 chữ cái in hoa:
A B C
Không cần thiết phải học thuộc tất cả các mã như:
A = 65 B = 66 C = 67 ...
Điều quan trọng hơn là hiểu:
Mỗi ký tự trong máy tính được lưu bằng một mã số.
Các chữ cái có thứ tự liên tiếp, nên ta có thể dùng phép so sánh và vòng lặp để xử lý chúng.
Không cần quá chú trọng vào việc nhớ:
'A' = 65 'a' = 97
Mà nên hiểu cách sử dụng ký tự:
for (char c = 'A'; c <= 'Z'; c++) {
cout << c;
}
Đây mới là phần quan trọng và có thể áp dụng vào nhiều bài toán.
Lệnh:
cout << int(c);
chủ yếu dùng để quan sát và kiểm tra mã số bên trong của ký tự.
Còn việc hiểu thứ tự các ký tự:
'A' < 'B' < 'C' < ... < 'Z'
mới thực sự hữu ích khi lập trình.
Tại sao cần hiểu ASCII