Bỏ qua để đến nội dung

Kiểu ký tự (char)

char là một kiểu số nguyên dùng để lưu một ký tự (thực chất là mã ASCII/Unicode của ký tự đó).

Dùng dấu nháy đơn '...' cho char (khác dấu nháy kép "..." dùng cho std::string):

#include <iostream>
int main() {
char grade = 'A';
char newline = '\n';
char tab = '\t';
std::cout << grade << std::endl; // A
return 0;
}

char được lưu trữ như một số nguyên 1 byte (mã ASCII), bạn có thể làm phép toán số học trực tiếp trên char:

#include <iostream>
int main() {
char c = 'A';
std::cout << (int)c << std::endl; // 65 (mã ASCII của 'A')
char next = c + 1;
std::cout << next << std::endl; // B
// Kiểm tra chữ hoa/thường dựa vào mã ASCII
char lower = 'a' + ('Z' - 'A'); // Không hợp lý về mặt ngữ nghĩa, chỉ minh họa phép toán
std::cout << lower << std::endl;
return 0;
}
#include <cctype>
#include <iostream>
int main() {
char c = 'a';
std::cout << (bool)std::isalpha(c) << std::endl; // 1 (true) - là chữ cái
std::cout << (bool)std::isdigit(c) << std::endl; // 0 (false) - không phải chữ số
std::cout << (char)std::toupper(c) << std::endl; // A - chuyển thành chữ hoa
std::cout << (char)std::tolower('B') << std::endl; // b
return 0;
}

C++ kế thừa từ C kiểu chuỗi ký tự (char[], còn gọi là C-string), khác với std::string hiện đại:

char c_string[] = "Hello"; // Mảng ký tự, kết thúc bằng ký tự null '\0'
std::string cpp_string = "Hello"; // Kiểu string hiện đại, an toàn và dễ dùng hơn nhiều

Trong hầu hết các trường hợp, nên dùng std::string thay vì char[] - char[] chủ yếu gặp khi làm việc với code C cũ hoặc API hệ thống cấp thấp.

  • char lưu một ký tự dưới dạng mã số (thường là ASCII), dùng dấu nháy đơn 'A'
  • char có thể tham gia phép toán số học vì bản chất nó là số nguyên 1 byte
  • <cctype> cung cấp các hàm kiểm tra/chuyển đổi ký tự: isalpha, isdigit, toupper, tolower
  • Chuỗi C-style (char[]) khác std::string - nên ưu tiên dùng std::string