Tổng quan về kiểu string trong C++
Khi tao tác với chuỗi trong ngôn ngữ C chúng ta thao tác với char* và các hàm thao tác với chuỗi. C++ đã bổ sung kiểu dữ liệu string tiện lợi hơn rất nhiều. Bài viết này sẽ tóm tắt những điều cơ bản cần biết về kiểu string của C++.
1. string là kiểu dữ liệu mới được định nghĩa sẵn trong C++, nó có nhiều ưu điểm vượt trội và giúp tránh được những phiền phức so với chuỗi kiểu char* của C.
2. Trong C++, bạn vẫn có thể dùng kiểu char* nếu muốn. Có thể chuyển từ kiểu string sang chuỗi char* bằng phương thức c_str().
3. Cần khai báo #include<string> để có thể sử dụng đầy đủ tiện ích của string.
4. string có các phép +, += để nối chuỗi thay vì dùng hàm trong thư viện string.h như kiểu char*.
5. Các hàm trong thư viện string.h (strlen, strcmp, strlwr,… ) sẽ không sử dụng được với string.
6. Có thể so sánh trực tiếp 2 chuỗi string: ==, !=, >, >=, <, <=. Nguyên tắc so sánh giống hệt như khi dùng hàm strcmp().
7. Dùng phương thức length() để lấy độ dài chuỗi, dùng phép lấy chỉ số [] để lấy từng phần tử của chuỗi.
Ví dụ:
string a = "ABCDE";
cout<< a.length();
cout<< a[2];
8. Dùng phép gán (=) để gán trực tiếp biến string bằng một chuỗi hoặc một biến string khác mà không cần copy.
9. Biến kiểu string có thể xuất bằng cout<< và nhập đến khi gặp khoảng trắng bằng cin>>.
10. Dùng getline(cin, <tên biến chuỗi>) để nhập chuỗi có khoảng trắng.
Ví dụ:
string a;
getline(cin, a);
cout << a;
11. string thực chất là một vector<char> có bổ sung thêm một số phương thức và thuộc tính. Do đó, nó có toàn bộ tính chất của một vector.
12. Dùng phương thức substr(<vị trí>, <số ký tự>) để lấy chuỗi con.
Ví dụ:
string a = "ABCDEF";
cout << a.substr(1, 3);
//Kết quả: BCD
13. Dùng phương thức insert() để chèn một chuỗi vào giữa chuỗi khác. Có rất nhiều cách để làm điều này:
str.insert(int pos, char * s); //chèn chuỗi kiểu char* vào vị trí pos
str.insert(int pos, string s); //chèn chuỗi s vào vị trí pos
str.insert(int pos, int n, char ch); //chèn n lần ch vào vị trí pos
14. Dùng phương thức erase() để xóa một phần chuỗi.
str.erase(int pos, int n); //xóa n ký tự từ vị trí pos
str.erase(int pos); //xóa từ vị trí pos đến cuối chuỗi
15. Có thể dùng phương thức compare() để so sánh 2 chuỗi nếu không muốn dùng các toán tử quan hệ.
int compare(const string& str) const;
int compare(const char* s) const;
int compare(size_t pos1, size_t n1, const string& str) const;
int compare(size_t pos1, size_t n1, const char* s) const;
int compare(size_t pos1, size_t n1, const string& str, size_t pos2, size_t n2) const;
int compare(size_t pos1, size_t n1, const char* s, size_t n2) const;
16. Dùng phương thức find() để tìm một chuỗi khác xuất hiện trong chuỗi. Trả về vị trí xuất hiện đầu tiên nếu tìm thấy và -1 nếu không tìm thấy.
str.find(int ch, int pos = 0); //tìm ký tự ch kể từ pos đến cuối
str.find(char *s, int pos = 0); //tìm chuỗi kiểu char* từ pos đến cuối
str.find(string& s, int pos = 0); //tìm chuỗi s kể từ pos đến cuối
17. Dùng phương thức replace() để thay thế một đoạn con trong chuỗi ban đầu.
str.replace(int pos, int nchar, char *s);
str.replace(int pos, int nchar, string s);
str.replace(int pos, int nchar, int n, int ch);
Bình luận
Cảm ơn bạn
Your comment has been submitted and will be published once it has been approved. 😊
OK