String trong C++ là một lớp chuyên được sử dụng để xử lý xâu ký tự thay cho mảng char, bạn vẫn có thể lưu xâu bằng mảng ký tự tuy nhiên nó không hỗ trợ nhiều hàm như string.
1. String
String trong C++ được sử dụng để lưu chuỗi (xâu) ký tự, nó như một mảng char động, có thể thay đổi kích thước một cách linh hoạt cũng như hỗ trợ chèn, xóa, sửa đổi...
Khai báo string bạn có thể khai báo một xâu ký tự rỗng hoặc xâu có sẵn nội dung :
Cú pháp :
string name_string;
string name_string = "";
string name_string = "data";
Bạn có thể khai báo string, in ra màn hình nội dung string và sử dụng hàm size() để in ra số lượng ký tự trong string.
#include <string>
using namespace std;
using ll = long long;
int main() {
string s1;
string s2 = "";
string s3 = "azbook";
cout << "Noi dung s1 : " << s1 << endl;
cout << "So luong ky tu s1 : " << s1.size() << endl;
cout << "Noi dung s2 : " << s2 << endl;
cout << "So luong ky tu s2 : " << s2.size() << endl;
cout << "Noi dung s3 : " << s3 << endl;
cout << "So luong ky tu s3 : " << s3.size() << endl;
}
Output :
So luong ky tu s1 : 0
Noi dung s2 :
So luong ky tu s2 : 0
Noi dung s3 : azbook
So luong ky tu s3 : 6
2. Duyệt String
String tương tự như 1 mảng động, bạn có thể truy xuất các phần tử (ký tự) trong xâu thông qua chỉ số được đánh từ 0.
Nếu bạn muốn duyệt từng ký tự trong string thì bạn có thể dùng 3 cách :
- Duyệt thông qua chỉ số
- Duyệt bằng ranged-base for loop
- Duyệt bằng Iterator
Ví dụ string s = "azbook!@#" :
s[index] | a | z | b | o | o | k | ! | @ | # |
index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Duyệt string bằng chỉ số :
#include <string>
using namespace std;
using ll = long long;
int main() {
string s = "azbook!@#";
for(int i = 0; i < (int)s.size(); i++) {
cout << "s[" << i << "] = " << s[i] << endl;
}
}
Output :
s[1] = z
s[2] = b
s[3] = o
s[4] = o
s[5] = k
s[6] = !
s[7] = @
s[8] = #
Duyệt bằng ranged-base for loop :
#include <string>
using namespace std;
using ll = long long;
int main() {
string s = "azbook!@#";
for(char x : s) {
cout << x << ' ';
}
}
Output :
Duyệt bằng iterator
Tương tự vector như thì bạn cũng có thể dùng iterator để duyệt qua string. Nếu bạn chưa nắm rõ về iterator có thể tham khảo kiến thức này tại bài Iterator trong C++
#include <string>
using namespace std;
using ll = long long;
int main() {
string s = "azbook!@#";
for(string::iterator it = s.begin(); it != s.end(); ++it) {
cout << *it << ' ';
}
}
Output :
3. Nhập Xâu Ký Tự Từ Bàn Phím
Trong trường hợp xâu ký tự của bạn không chứa khoảng trắng (dấu cách, tab) thì bạn có thể dùng cin.
#include <string>
using namespace std;
using ll = long long;
int main() {
string s;
cout << "Nhap xau s : ";
cin >> s;
cout << "Xau vua nhap : " << s << endl;
return 0;
}
Khi bạn muốn đọc xâu ký tự đến hết dòng (đọc hết cả dấu cách, tab) thì bạn cần dùng hàm getline()
Cú pháp :
Nếu getline() không có tham số thứ 3 thì mặc định nó sẽ là dấu enter.
#include <string>
using namespace std;
using ll = long long;
int main() {
string s;
cout << "Nhap xau s : \n";
getline(cin, s);
cout << "Xau vua nhap : " << s << endl;
return 0;
}
Input và output :
Output : Xau vua nhap : azbook C++ string
Trong trường hợp bạn thêm tham số thứ 3 cho getline() thì nó sẽ đọc từ luồng cin cho tới khi gặp kí tự là tham số thứ 3 mà bạn truyền vào hàm.
#include <string>
using namespace std;
using ll = long long;
int main() {
string s;
cout << "Nhap xau s : \n";
getline(cin, s, ',');
cout << "Xau vua nhap : " << s << endl;
return 0;
}
Input và output :
output : Xau vua nhap : azbook.C++