1.5.6 Escape characters

Ngôn ngữ C++ cũng cho phép chúng escape trong một số tình huống khác. Hãy bắt đầu với những literals biểu thị white spaces.

\n – biểu thị sự chuyển sang một dòng mới và đôi khi được gọi là một LF (Line Feed)

\r – biểu thị sự quay trở về đầu của một dòng và đôi khi được gọi là CR (Carriage Return)

Để làm một máy tính bắt đầu in một dòng mới, bạn phải send 2 kí tự trên theo thứ tự sau: LF để cấp giấy và CR để di chuyển đầu phun mực về đầu dòng.

\a (viết tắt của alarm) là một di tích của quá khứ khi teletypes thường được dùng để giao tiếp với máy tính (chắc chắn bạn đang thắc mắc teletypes là cái méo gì đúng không ?); gửi kí tự này cho một teletype cũng giống như rung chuông, vì vậy tên chính thức của kí tự này là BEL (viết tắt của bell – cái chuông); nếu bạn gửi kí tự này ra màn hình, bạn sẽ nghe thấy một âm thanh – nó sẽ không thực sự giống tiếng chuông mà giống một tiếng beep hơn.

\0 (chú ý: kí tự đằng sau dấu \ là số 0 chứ không phải chữ O): được gọi là null, là một kí tự không biểu diễn bất kì kí tự gì (nghe cứ ngu ngu thế éo nào ý nhỉ (o_O))

Bây giờ hãy cố gắng escape theo hướng khác một chút.

Ví dụ đầu tiên sẽ giải thích sự biến đổi khi backslash (dấu xuyệt ngược) được theo sau bởi 2 hoặc 3 chữ số hệ bát phân (các chữ số hệ bát phân có giá trị từ 0 đến 7). Các số được mã hóa theo cách này sẽ được coi như một giá trị trong bảng mã ASCII.

Nó trông sẽ giống giống như sau →

char Character = ‘\47’;

47 hệ 8 = 39 hệ 10. Tìm trong bảng mã ASCII bạn sẽ thấy 39 tương đương với mã ASCII của dấu nháy đơn, nó là kí tự sau

‘\”

(nhưng điều này chỉ đúng cho máy tính sử dụng mã ASCII)

Ví dụ thứ hai là tình huống mà backslash được theo sau bởi “X” (X hoa hay thường không phải vấn đề).

Ở đây chúng ta cần 1 hoặc 2 chữ số hexa. Giá trị của số hexa đó được coi như một giá trị trong bảng mã ASCII. →

char Character = ‘\x27’;

Bạn hoàn toàn có thể đoán được đó là kí tự gì vì 27 hệ 16 thì = 39 hệ 10.