Xem thêm

Kiểu ký tự trong C++ (Character)

Huy Erick
Trong lập trình, kiểu ký tự trong C++ (Character) là một kiểu dữ liệu quan trọng. Nó không chỉ đại diện cho các ký tự trong bảng mã ASCII mà còn đồng thời là một...

Trong lập trình, kiểu ký tự trong C++ (Character) là một kiểu dữ liệu quan trọng. Nó không chỉ đại diện cho các ký tự trong bảng mã ASCII mà còn đồng thời là một kiểu số nguyên. Trên thực tế, kiểu char thực hiện tất cả các phép toán số học thông thường như cộng, trừ, nhân, chia.

Kiểu ký tự trong C++ (Character)

Tổng quan về kiểu ký tự (Character)

Trong lập trình, khi chỉ sử dụng các kiểu số học như số nguyên hay số chấm động, việc hiển thị dữ liệu cho người dùng trở nên khó khăn và khó hiểu. Đó là lúc kiểu char trở nên cần thiết. Kiểu char cho phép lưu trữ và hiển thị các ký tự và thông báo cho người dùng một cách dễ dàng.

Bảng mã ASCII Bảng mã ASCII Bảng mã ASCII

Kiểu char có độ lớn là 1 byte (8 bits), được sử dụng để lưu trữ một ký tự trong bảng mã ASCII. Bảng mã ASCII là một bộ ký tự và mã kí tự dựa trên bảng chữ cái Latinh trong tiếng Anh.

Có hai loại ký tự trong bảng mã ASCII: ký tự không in được (ký tự điều khiển) và ký tự in được. Ký tự không in được có mã từ 0 -> 31 và 127, bao gồm các ký tự dùng để điều khiển như backspace, new line, escape, bell. Ký tự in được có mã từ 32 -> 126 bao gồm các chữ cái, số, toán tử, dấu câu.

Khai báo, khởi tạo và gán giá trị một biến ký tự

Để khai báo, khởi tạo và gán giá trị cho một biến kiểu ký tự trong C++, ta sử dụng từ khóa char. Ví dụ:

char ch1{ 'K' }; // khởi tạo biến character với ký tự 'K' (mã ASCII 75)
char ch2{ 75 }; // khởi tạo biến character với mã ASCII 75 (ký tự 'K')
char ch3(75); // khởi tạo biến character với mã ASCII 75 (ký tự 'K')
char ch4 = 'K'; // khởi tạo biến character với ký tự 'K' (mã ASCII 75)
char ch5; // khai báo biến kiểu character
ch1 = 75; // gán mã ASCII 75 (ký tự 'K') cho biến character

Lưu ý: Vì kiểu char là một kiểu số nguyên, ta hoàn toàn có thể sử dụng số nguyên (mã ASCII) hoặc ký tự để khởi tạo hoặc gán giá trị cho biến kiểu char.

In ký tự ra màn hình

Khi in ra màn hình, ta có thể sử dụng số nguyên (mã ASCII) hoặc ký tự để hiển thị. Ví dụ:

#include 
using namespace std;

int main() {
    char ch1{ 75 }; // mã ASCII 75 (ký tự 'K')
    cout << ch1 << endl; // ký tự 'K' với mã ASCII 75 được hiển thị ra màn hình

    char ch2{ 'K' }; // ký tự 'K' (mã ASCII 75)
    cout << ch2 << endl; // ký tự 'K' trực tiếp được hiển thị ra màn hình

    return 0;
}

Ở ví dụ trên, biến ch1 và ch2 đều cho kết quả là 'K'.

In ký tự từ số nguyên và ngược lại (Casting)

Kiểu char trong C++ là một kiểu dữ liệu đặc biệt, vừa là kiểu số nguyên, vừa là kiểu ký tự. Do đó, ta có thể in ra màn hình ký tự hoặc mã ASCII của nó. Ví dụ:

#include 
using namespace std;

int main() {
    int n{ 75 };
    cout << static_cast(n) << endl; // in ký tự với mã ASCII 75

    char ch{ 'K' };
    cout << static_cast(ch) << endl; // in mã ASCII của ký tự 'K'

    return 0;
}

Kết quả:

K
75

Trong chương trình trên, ta sử dụng static_cast để chuyển đổi giá trị của biến từ số nguyên sang kiểu char và ngược lại. Lệnh static_cast sẽ chuyển đổi giá trị của expression thành giá trị có kiểu Type-id và trả về giá trị đó.

Escape sequences

Trong C++, có một số ký tự mang ý nghĩa đặc biệt được gọi là Escape sequence. Escape sequence có cấu trúc gồm một dấu backslash (\) sau đó là một ký tự hoặc một số.

Bảng dưới đây liệt kê các Escape sequence trong C++:

Escape sequence Ý nghĩa
\n Xuống dòng
\t Tab
\' Ký tự nháy đơn
\" Ký tự nháy kép
\\ Dấu backslash

Ví dụ:

cout << "Howkteam.com\nFree Education"; // \n di chuyển con trỏ xuống một dòng mới

Kết quả:

Howkteam.com
Free Education

Newline ‘\n’ và std::endl

Trong C++, ta có thể sử dụng newline (\n) hoặc std::endl để xuống dòng khi in một chuỗi. Ví dụ:

cout << "HowKteam.com" << std::endl;
cout << "Free education\n";

Dù kết quả của cả hai cách đều giống nhau, tuy nhiên, std::endl có một chức năng khác so với \n. std::endl sẽ xóa output buffer mỗi khi nó được gọi, trong khi \n không làm điều này.

Vì vậy, nên sử dụng std::endl khi bạn cần đảm bảo output của bạn ngay lập tức. Tuy nhiên, khi làm việc với file I/O, hạn chế sử dụng std::endl để tránh việc phải flush buffer liên tục.

Dấu nháy đơn ‘K’ và dấu nháy kép “Kteam”

Trong bài học này, các ký tự luôn được đặt trong dấu nháy đơn ('). Một biến kiểu char chỉ lưu trữ một ký tự, nếu bạn khởi tạo nhiều hơn một ký tự, bạn sẽ nhận được một thông báo lỗi.

Còn chuỗi ký tự (string) là một tập hợp các ký tự được đặt trong dấu nháy kép ("). Ví dụ:

cout << "HowKteam.com"; // HowKteam.com là một chuỗi ký tự

Trong bài học này, ta chỉ tập trung vào ký tự. Chuỗi ký tự (string) là một khái niệm tương đối phức tạp và sẽ được giới thiệu chi tiết trong bài học khác.

Kết luận

Qua bài học này, bạn đã hiểu về kiểu ký tự trong C++ (Character) và những thắc mắc liên quan khi sử dụng nó. Kiểu char là một kiểu dữ liệu cực kỳ quan trọng trong lập trình. Trong bài học tiếp theo, bạn sẽ được học về kiểu luận lý trong C++ (Boolean). Hãy tiếp tục luyện tập và thử thách để nắm vững kiến thức nhé!

Nếu bạn có bất kỳ khó khăn hay thắc mắc nào, hãy đặt câu hỏi trong phần bình luận hoặc trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng. Chúc bạn thành công trong việc học lập trình!

1