You are on page 1of 24

CHƯƠNG IV

KIỂU DỮ LIỆU CÓ
CẤU TRÚC
§12
KIỂU XÂU

xâu

T I N H Ọ C
Lưu ý về XÂU là mảng (dãy)
4 ký tự.

3 Các thao tác xử lý xâu;

2 Khai báo kiểu xâu;

1 Khái niệm về kiểu xâu;

NỘI DUNG
01 Khái niệm về kiểu xâu
Khái ni m
Xâu là dãy các kí tự trong bộ mã ASCII, mỗi kí tự là
một phần tử trong xâu;
Số lượng kí tự trong xâu được gọi là độ dài của xâu;
Xâu có độ dài bằng 0 gọi là xâu rỗng.
 Ví dụ: các xâu ký tự đơn giản
 “Chung toi la gia dinh”
 “THPT CHUYEN LUONG VAN CHANH”
Có thể xem xâu là mảng một chiều mà mỗi phần tử là một kí tự.
Các kí tự của xâu được đánh số thứ tự, thường bắt đầu là 0.
Khái ni m
. Để mô tả kiểu xâu ta cần xác định
 Tên kiểu xâu;
 Cách khai báo biến kiểu xâu;
 Số lượng kí tự kiểu xâu;
 Các phép toán thao tác với xâu;
 Tham chiếu tới phần tử của xâu.
02 Khai báo
Khai báo không khởi tạo
Biểu diễn bằng mảng của ký tự (char)
Ví dụ: char st[100];
char <tên biến xâu>[độ dài]; Ví dụ: char st[];
được hiểu là mảng st có tối đa là 100
char <tên biến xâu>[]; phần tử mà mỗi phần tử là kiểu kí tự.

Biểu diễn bằng kiểu xâu (string)


string <tên biến xâu>; Ví dụ:string st1, st2;
string <tên biến xâu>[độ dài]; string st[100];//Mảng kiểu xâu.

Hằng xâu luôn được đặt trong cặp dấu nháy kép “ ”,
còn kí tự đặt trong cặp dấu nháy đơn ‘ ’.
Khai báo biến xâu và khởi tạo giá trị ban đầu
Biểu diễn bằng mảng của ký tự (char)
char <tên biến xâu>[độ dài] Ví dụ:
= “xâu ký tự”; char st[15]= ‘THPTchuyenLVC’;

char <tên biến xâu>[] Ví dụ:


= ‘xâu ký tự ’.; char st[] = ‘THPTchuyenLVC’;

Biểu diễn bằng kiểu xâu (string)


string <tên biến xâu> Ta có thể vừa khai báo vừa
= <hằng chuỗi>; khởi tạo như những kiểu khác.
Ví dụ:
string <tên biến xâu>[độ dài]
string st1 = “Ngon ngu C++”;
= <hằng chuỗi>; string st2[15] = “THPT chuyen LVC”;
Ví dụ minh họa về khai báo biến xâu

string st ; // Khai báo chuỗi cho biến st

string str0("") ; // Khởi tạo chuỗi rỗng cho biến str0

string str1("Kteam") ; // Khởi tạo chuỗi “Kteam” cho biến str1

string str2{"Education!"} ; // Khởi tạo chuỗi "Education!" cho biến str2

string str3 = "HowKteam.com" ; // Khởi tạo chuỗi "HowKteam.com" cho biến str3

string str4 = str1 ; // Gán giá trị chuỗi str1 cho str4

string strNumber = "88" ; // Khởi tạo chuỗi số "88" cho strNumber, không phải số

Tin học 11 - Ngôn ngữ lập trình C++


10/03/2023
10
03 Tham chiếu đến phần tử
trong xâu
Tham chiếu đến các phần tử trong xâu

Ten_bien_xau[chiso]
Nếu xâu có n ký tự thì bắt đầu là 0 và kết thúc là n-1.
 Ví dụ: tentruong = “THPT chuyen LVC” ;
 Tham chiếu tới phần tử thứ 6 như sau: tentruong[5]
 Kết quả: c
T H P T c h u y e n L V C \0
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
 Hằng xâu - nhiều kí tự luôn được đặt trong cặp dấu nháy kép
“ ”. Nếu xâu - một kí tự thì đặt trong cặp dấu nháy kép “ ”
hoặc cặp dấu nháy đơn ‘ ’.
 C++ sẽ tự động thêm ‘\0’ vào cuối chuỗi.
 Khi khởi tạo giá trị là số cho một chuỗi, C++ không tự động
chuyển một chuỗi số về giá trị số nguyên (integer) hoặc số
thực (floating point) và không có những thao tác như một
biến số học (cộng, trừ, nhân, chia, …).
 Nếu muốn xuống dòng có 2 cách sau:
 Sử dụng tham số endl
 Ví dụ: cout << str1 << endl ;
 Sử dụng ký tự đặt biệt là mã điều khiển xuống dòng: \n
 Ví dụ: cout << str1 << " \n " ;
04 Nhập/xuất kiểu xâu
Nhập – Xuất trong xâu Xuất xâu: ta dùng cout như các loại
dữ liệu khác.
Nhập xâu: có 2 cách
Dùng cú pháp getline:
Dùng cú pháp cin:
getline(cin,biến_xâu);
cin >> biến_xâu
 Khai báo biến xâu:  Khai báo biến xâu:
char st[20] ; string st ;
 Nhập xâu từ bàn phím:  Nhập xâu từ bàn phím:
cout<< “Hay nhap xau cout<<“Hay nhap xau st:”;
st: ” ; getline(cin, st) ;
cin >> st ;  Xuất xâu ra màn hình:
 Xuất xâu ra màn hình: cout<<“Xau st vua nhap
cout<<“Xau st vua nhap
vao:” << st;
vao: ” << st ;
Tin học 11 - Ngôn ngữ lập trình C++
10/03/2023
15
Minh họa Nhập – Xuất trong xâu
#include <bits/stdc++.h>
#include <bits/stdc++.h>
using namespace std;
using namespace std;
char st[20]; //khai báo biến xâu
string st; //khai báo biến xâu
int main()
int main()
{
{
// Nhap xau st
// Nhap xau st
cout << "Hay nhap vao xau st: ";
cout<<" Hay nhap vao xau st: ";
// Xuat xau st
getline(cin,st);
cin >> st;
// Xuat xau st
cout <<"\n Xau st vua nhap vao:"
cout<<"\n Xau st vua nhap vao: "
<<st;
<< st;
return 0;
return 0;
}
}
Tin học 11 - Ngôn ngữ lập trình C++
10/03/2023
16
Minh họa Nhập – Xuất trong xâu
#include <bits/stdc++.h>
#include <bits/stdc++.h>
using namespace std;
using namespace std;
char st[20];
string st;
int main()
int main()
{
{
cout << "Hay nhap vao xau st: ";
cout<<" Hay nhap vao xau st: ";
cin >> st;
getline(cin,st);
cout <<"\n Xau st vua nhap vao:"
cout<<"\n Xau st vua nhap vao: "
<<st;
<< st;
return 0;
return 0;
}
}

Tin học 11 - Ngôn ngữ lập trình C++


10/03/2023
17
05 Các thao tác xử lý xâu
 Xâu A lớn hơn xâu B nếu như kí tự đầu tiên khác nhau giữa chúng kể
từ trái sang phải trong xâu A có mã ASCII lớn hơn.
 Ví dụ: ‘T’ > ‘A’ hoặc “T” > “A”
 Nếu A và B là các xâu có độ dài khác nhau và A là đoạn đầu của
B thì A nhỏ hơn B.
 Ví dụ: “May tinh” < “May tinh cua toi”

 Hai xâu được coi là bằng nhau nếu như chúng giống nhau
hoàn toàn.
 Ví dụ: “TIN HOC” = “TIN HOC”
1. Lấy chỉ số: st[chỉ số]; st[0]; st[5];
2. Lấy độ dài: st.length(); hoặc st.size()
st =“123456”; cout<<st.length();  in ra là 6
3. Phép ghép xâu: ta dùng dấu ‘+’ để ghép xâu.
st1 + st2+……+ stn;
st1 =“THPT chuyen”; st2 =“LVC”;
st = st1 + st2; cout<<st;  in ra là THPT chuyen LVC.
ta không được viết st1 =“THPT chuyen” + “LVC”; báo lỗi

st1 =“ ”; st1 = st1 + “THPT chuyen” + “LVC”;


4. Phép chèn xâu: st1.insert(vt,st2); st[0]; st[5];
//Ý nghĩa chèn xâu st2 vào xâu st1 bắt đầu từ vị trí vt (vị trí
trong xâu được tính bắt đầu từ 0); như vậy st1 sẽ bị thay đổi
còn st2 vẫn giữ nguyên giá trị.
st1 = “abcacd”; st2 = “12”;
st1.insert(0,st2)  giá trị st1 = “12abcacd”
5. Xóa xâu: st.erase(vt,n);
//xóa đi n kí tự của xâu st từ vị trí vt, kết quả xâu
st sẽ bị thay đổi.
6. Tìm kiếm: st1.find(st2);
//Tìm kiếm vị trí đầu tiên của xâu hoặc kí tự st2
trong xâu st1
7. Đổi chỗ 2 xâu: st1.swap(st2);
//kết quả sẽ đổi chỗ giá trị của 2 xâu này;
8. Lấy xâu con: st.substr(vt,n);
//trích ra n xâu con kí tự bắt đầu từ vị trí vt của xâu st.
st1 = “THPT chuyen LVC”; st2 = st1.substr(10,5)
 “chuyen LVC”
9. Thay thế: st1.replace (vt, n, st2);
//Thay thế n kí tự của xâu st1 bắt đầu từ vị trí vt
bằng xâu st2.

You might also like