Tháng 10 5, 2022

Các thao tác xử lý chuỗi ký tự

Share this

Đăng bởi Admin

Tháng 10 5, 2022

1. Phép so sánh

Như đã đề cập ở phần trước, máy tính sử dụng một bảng chữ cái gồm 256 kí tự được đánh số từ 0 tới 255 , mỗi kí tự đều được mã hóa bằng những bit nhị phân, gọi là bảng mã ASCII. Hai chuỗi kí tự được so sánh với nhau dựa trên bảng mã này. Quy trình so sánh hai chuỗi kí tự XY trong \mathrm{C}^{+}+diễn ra như’ sau:
– Các kí tự được đánh số từ 0 ở mỗi chuỗi, sau đó tìm vị trí i đầu tiên sao cho X_i \neq Y_i. Khi đó, nếu X_i nằm sau Y_i trong bảng mã ASCIl thì chuỗi X sẽ lớn hơn chuỗi Y, ngược lại chuỗi Y Iớn hơn chuỗi X.
– Trong trường hợp không tìm được vị trí i thỏa mãn thì chuỗi nào dài hơn sẽ là chuỗi lớn hơn.
– Nếu cả hai trường hợp trên không xảy ra thì kết luận chuỗi X bằng chuỗi Y.
Các toán tử \rangle, \langle, \langle=, \rangle=, ==, != có thể được sử dụng trực tiếp để so sánh hai kí tự hoặc hai chuỗi trong \mathrm{C}++, tất nhiên là theo quy tắc nêu trên vì hệ thống đã có sẵn các toán tử so sánh nạp chồng cho kiểu chuỗi.

Ví dụ 1:

#include <iostream>
#include <string>

using namespace std;

int main()
{
    string s1 = "Tôi đi học";
    string s2 = "Tôi đi ngủ";

    cout << "Chuỗi lớn hơn là: "
    if (s1 > s2)
        cout << s1;
    else
	cout << s2;
}

Kết quả chạy chương trình sẽ là:

Chuỗi lớn hơn là: Tôi đi ngủ

Chuỗi Tôi đi học nhỏ hơn chuỗi Tôi đi ngủ vì kí tự n lớn hơn kí tự h trong bảng mã ASCII. Một điều rất thú vị trong so sánh chuỗi, đó là mặc dù số 100 lớn hơn số 90, nhưng chuỗi 100 sẽ nhỏ hơn chuỗi 90, vì kí tự 1 đứng trước kí tự 9 trong bảng mã ASCII. Do đó, khi so sánh các số ở dạng chuỗi cần hết sức chú ý (vấn đề này sẽ được nhắc tới trong chủ đề Xử lý số nguyên lớn).

2. Phép nối chuỗi

Khác với phép cộng ở kiểu số, toán tử + khi được kết hợp với hai chuỗi có ý nghĩa là nối hai chuỗi đó với nhau.

#include <iostream>
#include <string>
using namespace std;

int main()
{
    string s1 = "Ngày mai ";
    string s2 = "tôi đi học.";

    cout << s1 + s2;
}

Với đoạn code trên, kết quả thu được là:

Ngày mai tôi đi học.

3. Các hàm xử lý chuỗi trong C++

Khi khai báo string s;, bảng dưới đây là các hàm xử lý có thể sử dụng trong thư viện <string> của C++:

4. Duyệt chuỗi

Để duyệt qua các phần tử trên chuỗi, ta sử dụng một vòng lặp từ vị trí đầu tiên tới vị trí cuối cùng của chuỗi. Lớp <string> cung cấp cú pháp {Tên_chuỗi}.size() để lấy độ dài của chuỗi, mà ta biết rằng các phần tử trong chuỗi được đánh số từ vị trí 0,0, nên cú pháp duyệt chuỗi như sau:

for ({Biến_đếm} = {Vị_trí_đầu}; {Biến_đếm} < {Tên_chuỗi}.size(); {Tăng_giảm_biến_đếm})
{
    {Các_câu_lệnh};
}

Chẳng hạn, để duyệt các phần tử của một chuỗi ss từ đầu tới cuối chuỗi, ta viết như sau:

for (int i = 0; i < s.size(); ++i)

Ngoài ra, chúng ta còn có thể duyệt qua tất cả các phần tử trong chuỗi theo cú pháp duyệt trực tiếp phần tử như sau:

for (char {Tên_biến_kí_tự}: {Tên_chuỗi})
{
    {Các_câu_lệnh};
}
Chia sẻ:
{"email":"Email address invalid","url":"Website address invalid","required":"Required field missing"}

Tài liệu tương tự

Tháng 4 4, 2023

SÁCH GIÁO KHOA TIN HỌC 10

Tháng 10 10, 2022

Bài 11: Repalind

Tháng 10 9, 2022

Bài 10: Reverse

Tháng 10 9, 2022

Bài 9: Compress
>