Lớp string trong C++ và các hàm thường dùng của lớp string

Đây là bài 31/43 bài của series môn học Nhập môn lập trình

Ngoài mảng ký tự, chúng ta có thể sử dụng lớp string để lưu trữ chuỗi ký tự trong C++.

1. Lớp string trong C++

Trong C++, bạn có thể tạo ra một đối tượng string để lưu trữ chuỗi ký tự. Không giống mảng ký tự, đối tượng string không có kích thước cố định và có thể mở rộng nếu cần.

Đối tượng string được tạo bởi lớp string trong thư viện #include <string>.

Cú pháp khai báo đối tượng string:

string <tên đối tượng string>;

Có thể gán một hằng string hoặc các string khác vào một biến string.

string str1 = "I love";
string str2 = str1;

Có thể gán hai chuỗi string, nối chuỗi bằng toán tử “+”, so sánh hai chuỗi bằng các toán tử quan hệ (<, >, ==, !=,…). Một string với chiều dài n, những vị trí của các ký tự của string có phạm vi từ 0 tới n – 1. Có thể truy xuất ký tự trong string như mảng với cú pháp: <tên chuỗi> [vị trí].

string str1 = "Apple"; string str2 = "apple";
string str3 = "apples"; string str4 = "orange";
bool t1 = (str1 == str2); // t1 = false
bool t2 = (str1 < str2); //t2 = true
bool t3 = (str2 < str3); //t3 = true
bool t4 = (str3 != str4); //t4 = true
bool t5 = (str4 > str3); // t5 = true
string myMsg = "How are you doing?";
cout<<myMsg[4]<<" "<<myMsg[12]<<myMsg[13]<<myMsg[16]<<endl; // a dog

2. Các hàm thành viên trong lớp string

Thư viện <string> rất nhiều hàm cho phép xử lý chuỗi. Ví dụ: tìm chiều dài chuỗi, so sánh hai chuỗi, tìm kiếm/rút trích chuỗi con, nối chuỗi,…

Hàm s.length()

Trả về số lượng ký tự trong string s.

string s1 = "introduction to programming";
cout<<"length of s1 = "<<s1.length();//27

Hàm s.substr(x, y)

Rút trích một chuỗi con với chiều dài y bắt đầu tại vị trí x. Nếu không có y, một chuỗi con từ vị trí x tới cuối chuỗi sẽ được rút trích.

string s1 = "introduction to programming";
cout<<"substring has 10 characters of s1 start at 5:"<<s1.substr(5, 10);
//Kết quả: substring has 10 characters of s1 start at 5:duction to

Hàm s.find(r)

Kiểm tra chuỗi string r có xuất hiện trong chuỗi s hay không. Nếu có thì trả về vị trí bắt đầu xuất hiện chuỗi r trong chuỗi s.

string s1 = "introduction to programming";
cout<<"position of 'duc' string in s1:"<<s1.find("duc");//5

Hàm s.erase(x, n)

Xóa n ký tự bắt đầu tại vị trí x.

string s1 = "introduction to programming";
s1.erase(5, 15);
cout<<"s1 string after erase:"<<s1;//s1 string after erase:introramming

Hàm s.replace(x, n, str)

Thay thế n ký tự tại vị trí bắt đầu là x bằng chuỗi str. Lưu ý: chiều dài của str có thể lớn hơn n.

string s1 = "introduction to programming";
s1.replace(5, 10, "123123123");
cout<<"s1 string after replace:"<<s1;//s1 string after replace:intro123123123 programming

Hàm s1.compare(s2)

So sánh chuỗi s1 với s2. Giá trị trả về là -1 nếu s1 < s2, bằng 0 nếu s1 == s2, là 1 nếu s1 > s2.

string s1 = "introduction to programming";
string s2 = "c++ programming language";
cout<<"s1 compare s2:"<<s1.compare(s2);//1

Hàm s1.swap(s2)

Hoán đổi nội dung hai chuỗi.

string s1 = "introduction to programming";
string s2 = "c++ programming language";
s1.swap(s2);
cout<<"s1 after swap:"<<s1<<endl;
cout<<"s2 after swap:"<<s2;
//Kết quả:
//s1 after swap:c++ programming language
//s2 after swap:introduction to programming

Hàm s1.insert(index, s2)

Thêm chuỗi s2 vào s1 sau vị trí index.

string s1 = "introduction to programming";
string s2 = "c++ programming language";
s1.insert(10, s2);
cout<<"s1 after insert s2:"<<s1;
//Kết quả:
//s1 after insert s2:introductic++ programming languageon to programming
4.9/5 - (8 bình chọn)
Bài trước và bài sau trong môn học<< Chuỗi ký tự là gì? Cách khởi tạo và một số kỹ thuật lập trình trên chuỗiMảng hai chiều là gì? Cách khai báo và khởi tạo trong C++ >>
Chia sẻ trên mạng xã hội:

Tác giả Vinh Lê

Vinh Lê hiện đang là biên tập viên tại Góc Học IT.

Bài viết của Vinh Lê

4 bình luận về bài viết “Lớp string trong C++ và các hàm thường dùng của lớp string

  1. Mình Thấy bài viết rất hay và muốn xin để làm tài liệu dạy học sinh. Bạn vui lòng chia sẽ cho mình với nhé.
    Cảm ơn bạn rất nhiều

  2. Mình cũng đang dạy học sinh môn C++, thấy bài giảng hay, ad có thể chia sẻ cho mình các bài giảng để in đóng cuốn đc không? thanks, mail của mình [email protected]

    Chào trân trọng!

  3. Xin chào bạn,
    Mình đang tìm hiểu về C++ để dạy cho học sinh, thấy tài liệu trên web rất hay. Mình muốn in tất cả các bài ra giấy (đóng thành 1 cuốn tài liệu) để đọc cho tiện, bạn có thể hỗ trợ mình được không?
    Họ tên: Vũ Trường
    Email: [email protected]

Trả lời

Lưu ý:

1) Vui lòng bình luận bằng tiếng Việt có dấu.

2) Khuyến khích sử dụng tên thật và địa chỉ email chính xác.

3) Mọi bình luận trái quy định sẽ bị xóa bỏ.