Một số hàm liên quan xâu và chuỗi

Một số hàm và thao tác liên quan đến ký tự và chuỗi trong C++

11
  1. Kiểu dữ liệu char
  2. Chuyển ký tự thành mã số
  3. Chuyển mã số thành ký tự
  4. Kiểm tra ký tự có phải là chữ cái
  5. Kiểm tra ký tự có phải là chữ số
  6. Kiểm tra chữ hoa và chữ thường
  7. Chuyển chữ thường thành chữ hoa
  8. Chuyển chữ hoa thành chữ thường
  9. Kiểu dữ liệu string
  10. Lấy độ dài chuỗi
  11. Lấy từng ký tự trong chuỗi
  12. Duyệt từng ký tự bằng vòng lặp for
  13. Duyệt chuỗi bằng for-each
  14. Thêm một ký tự vào cuối chuỗi
  15. Xóa ký tự cuối cùng
  16. Nối hai chuỗi
  17. Tìm chuỗi con
  18. Lấy một phần của chuỗi
  19. Xóa một phần chuỗi
  20. Thay thế một phần chuỗi
  21. Chuyển số thành chuỗi
  22. Chuyển chuỗi thành số

Trong C++, chúng ta thường làm việc với hai kiểu dữ liệu:

  • char: dùng để lưu một ký tự.
  • string: dùng để lưu một chuỗi gồm nhiều ký tự.

1. Kiểu dữ liệu char

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ỗi


2. Chuyển ký tự thành mã số

Mỗ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ự.


3. Chuyển mã số thành 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

4. Kiểm tra ký tự có phải là chữ cái

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";
}


5. Kiểm tra ký tự có phải là chữ số

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ố

6. Kiểm tra chữ hoa và chữ thường

isupper()

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";
}

islower()

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";
}


7. Chuyển chữ thường thành chữ hoa

Hàm toupper() dùng để chuyển ký tự thành chữ in hoa.

char c = 'a';
cout << toupper(c);

Kết quả:

A

8. Chuyển chữ hoa thành chữ thường

Hàm tolower() dùng để chuyển ký tự thành chữ thường.

char c = 'A';
cout << tolower(c);

Kết quả:

a

9. Kiểu dữ liệu string

Kiểu string dùng để lưu một chuỗi ký tự.

#include <string>
string s = "Hello";
cout << s;

Kết quả:

Hello

10. Lấy độ dài chuỗi

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();

11. Lấy từng ký tự trong chuỗi

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

12. Duyệt từng ký tự bằng vòng lặp for

string s = "Hello";
for (int i = 0; i < s.length(); i++) {
    cout << s[i] << endl;
}

Kết quả:

H
e
l
l
o

13. Duyệt chuỗi bằng for-each

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.

14. Thêm một ký tự vào cuối chuỗi

Dùng push_back().

string s = "ABC";
s.push_back('D');
cout << s;

Kết quả:

ABCD

15. Xóa ký tự cuối cùng

Dùng pop_back().

string s = "ABCD";
s.pop_back();
cout << s;

Kết quả:

ABC

16. Nối hai chuỗi

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

17. Tìm chuỗi con

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

18. Lấy một phần của chuỗi

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ự)

19. Xóa một phần chuỗi

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

20. Thay thế một phần chuỗi

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++

21. Chuyển số thành chuỗi

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

22. Chuyển chuỗi thành số

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

Bảng ghi nhớ nhanh

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

Thứ tự nên học

  1. char
  2. Mã ký tự
  3. string
  4. s[i]
  5. length()
  6. Duyệt chuỗi bằng for
  7. isdigit() và isalpha()
  8. toupper() và tolower()
  9. find()
  10. substr()

Đ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++