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
MÌnh thấy tài liệu của bạn rất hay, mình rất cần. Bạn có thể cho mình xin được không? Cảm ơn Bạn nhiều nha.
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
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!
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]
Bạn check email nhé!