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ự đó).
Khai báo char
Phần tiêu đề “Khai báo char”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 thực chất là số
Phần tiêu đề “char thực chất là số”Vì 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;}Các hàm xử lý ký tự trong <cctype>
Phần tiêu đề “Các hàm xử lý ký tự trong <cctype>”#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;}Chuỗi ký tự C-style (char[]) vs std::string
Phần tiêu đề “Chuỗi ký tự C-style (char[]) vs std::string”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ềuTrong 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.
Tổng kết
Phần tiêu đề “Tổng kết”charlưu một ký tự dưới dạng mã số (thường là ASCII), dùng dấu nháy đơn'A'charcó 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ácstd::string- nên ưu tiên dùngstd::string