Trong C++, chúng ta thường làm việc với hai kiểu dữ liệu:
Kiểu char dùng để lưu một ký tự và được đặt trong dấu nháy đơn.
char c = 'A';
cout << c;Kết quả:
A
Lưu ý: 'A' là một ký tự, còn "A" là một chuỗi.
char c = 'A'; // Một ký tự
string s = "A"; // Một chuỗiMỗi ký tự trong máy tính được lưu bằng một mã số.
char c = 'A';
cout << int(c);Kết quả:
65
Lệnh này giúp chúng ta quan sát mã số bên trong của ký tự.
Dùng char() để chuyển một số thành ký tự tương ứng.
cout << char(65);Kết quả:
A
Ví dụ:
char(65) → A char(66) → B char(67) → C
Hàm isalpha() dùng để kiểm tra một ký tự có phải là chữ cái hay không.
#include <cctype>
char c = 'A';
if (isalpha(c)) {
cout << "Đây là chữ cái";
}
Hàm isdigit() dùng để kiểm tra một ký tự có phải là chữ số hay không.
#include <cctype>
char c = '5';
if (isdigit(c)) {
cout << "Đây là chữ số";
}Lưu ý:
'5' là ký tự 5 là số
Kiểm tra ký tự có phải là chữ in hoa hay không.
char c = 'A';
if (isupper(c)) {
cout << "Chữ in hoa";
}Kiểm tra ký tự có phải là chữ thường hay không.
char c = 'a';
if (islower(c)) {
cout << "Chữ thường";
}Hàm toupper() dùng để chuyển ký tự thành chữ in hoa.
char c = 'a';
cout << toupper(c);Kết quả:
A
Hàm tolower() dùng để chuyển ký tự thành chữ thường.
char c = 'A';
cout << tolower(c);Kết quả:
a
Kiểu string dùng để lưu một chuỗi ký tự.
#include <string>
string s = "Hello";
cout << s;Kết quả:
Hello
Dùng length() hoặc size() để lấy số lượng ký tự trong chuỗi.
string s = "Hello";
cout << s.length();Kết quả:
5
Có thể dùng:
cout << s.size();
Mỗi ký tự trong chuỗi có một vị trí. Vị trí đầu tiên bắt đầu từ 0.
string s = "Hello";
cout << s[0];Kết quả:
H
Vị trí các ký tự:
H e l l o 0 1 2 3 4
string s = "Hello";
for (int i = 0; i < s.length(); i++) {
cout << s[i] << endl;
}Kết quả:
H e l l o
string s = "Hello";
for (char c : s) {
cout << c << endl;
}Có thể hiểu đơn giản:
Lấy lần lượt từng ký tự c trong chuỗi s.
Dùng push_back().
string s = "ABC";
s.push_back('D');
cout << s;Kết quả:
ABCD
Dùng pop_back().
string s = "ABCD";
s.pop_back();
cout << s;Kết quả:
ABC
Có thể dùng dấu + để nối chuỗi.
string a = "Hello";
string b = " World";
string c = a + b;
cout << c;
Kết quả:
Hello World
Hàm find() dùng để tìm vị trí xuất hiện của một chuỗi con.
string s = "Hello World";
cout << s.find("World");Kết quả:
6
Hàm substr() dùng để lấy một phần chuỗi.
string s = "Hello World";
cout << s.substr(0, 5);Kết quả:
Hello
Cú pháp:
s.substr(vị_trí_bắt_đầu, số_lượng_ký_tự)
Hàm erase() dùng để xóa một phần chuỗi.
string s = "Hello World";
s.erase(5, 6);
cout << s;Kết quả:
Hello
Hàm replace() dùng để thay thế một phần chuỗi.
string s = "Hello World";
s.replace(6, 5, "C++");
cout << s;Kết quả:
Hello C++
Dùng hàm to_string().
int so = 4312;
string s = to_string(so);
cout << s;Kết quả:
4312
Sau khi chuyển thành chuỗi, ta có thể duyệt từng ký tự:
for (char c : s) {
cout << c << endl;
}Kết quả:
4 3 1 2
Dùng stoi() để chuyển chuỗi thành số nguyên.
string s = "123";
int n = stoi(s);
cout << n + 1;Kết quả:
124
| Hàm hoặc thao tác | Công dụng |
|---|---|
| int(c) | Ký tự thành mã số |
| char(65) | Mã số thành ký tự |
| isalpha(c) | Kiểm tra chữ cái |
| isdigit(c) | Kiểm tra chữ số |
| isupper(c) | Kiểm tra chữ hoa |
| islower(c) | Kiểm tra chữ thường |
| toupper(c) | Đổi thành chữ hoa |
| tolower(c) | Đổi thành chữ thường |
| s.length() | Lấy độ dài chuỗi |
| s[i] | Lấy ký tự tại vị trí i |
| push_back() | Thêm ký tự vào cuối |
| pop_back() | Xóa ký tự cuối |
| find() | Tìm vị trí chuỗi con |
| substr() | Lấy một phần chuỗi |
| erase() | Xóa một phần chuỗi |
| replace() | Thay thế một phần chuỗi |
| to_string() | Chuyển số thành chuỗi |
| stoi() | Chuyển chuỗi thành số nguyên |
Điều quan trọng nhất là hiểu rằng chuỗi là một tập hợp các ký tự. Khi biết cách lấy và xử lý từng ký tự, chúng ta có thể giải quyết rất nhiều bài toán về chuỗi.
Tìm kiếm:
Một số hàm và thao tác liên quan đến ký tự và chuỗi trong C++