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);
#Tổng #quan #về #kiểu #string #trong