Xâu kí tự - Tin học đại cương (IT1110) | Trường Đại học Bách khoa Hà Nội

Khai báo xâu:   string  <tên biến xâu>;

lOMoARcPSD| 27879799
XÂU KÍ TỰ
1. Khai báo xâu: string <tên biến xâu>;
Ví dụ: string s,p;
2. Truy cập ến phần tử của xâu: <tên biến xâu>[chỉ số];
Ví dụ s= “lop 11 Tin”; s[0]= ‘l’; s[7]= ‘T’;
Chú ý: Kí tự ầu tiên trong xâu có ịa chỉ là 0
3. Độ dài của xâu: <tên biến xâu>.length()
Ví dụ int n=s.length(); có kết quả n=10;
4. Phép ghép xâu: Dùng phép “+” ể ghép xâu s=s1+s2;
Ví dụ s1= “hoc” s2= “bai”;
S=s1+s2 cho kết quả “hocbai”;
5. Đọc vào một xâu: 2 cách
+ getline(cin,s);
+ cin s; nếu xâu s có chứa dấu cách thì lệnh cin sẽ không ọc hết các kí tự
sau dấu cách.
-Ví dụ: s= “lop 11 toan”
- Nếu ọc bằng lệnh cin>>s; thì s= “lop”
6. In ra xâu: Có 2 cách
-Cách 1: cout<<s;
-Cách 2: for (int i=0; i<n; i++) printf(“%c”,s[i]) trong
ó n là ộ dài của xâu s. In ra từng kí tự.
7. sao chép xâu s.substr(vt, n);
Tch ra chuỗi con gồm n kí tự của một chuỗi cho trước kể từ kí tự ở vị trí vt. Ví
dụ : s= “lop 11 toan”;
s1=s.substr(5,4) ; cho kết quả s1=“11 t”; Nếu
không có tham số n thì sao chép hết.
8. chèn xâu kí tựo vị trí nào ó của xâu s cho trước. Có nhiều cách dùng
phương thức này: + s.insert(vt,x);
Ý nghĩa : chèn xâu x vào xâu s từ vị trí thứ vt.
Ví dụ: s= “lop toan”; x= “11”;
s.insert(5,x); kết quả “lop 11toan”;
+ s.insert(vt,n,x); chèn n lần kí tự ch vào xâu s từ vị trí vt.
Ví dụ: s= “lop toan”; x= “ hoc mai”;
lOMoARcPSD| 27879799
s.insert(s.length(),3,x); => “lop toan hoc mai hoc mai hoc mai”;
9. Phương thức xóa: s.erase(int pos, int n); xóa n ký tự của xâu s kể từ vị trí pos;
Nếu không quy ịnh giá trị n thì tất cả các ký tự của s từ vị trí pos trở i sẽ bị xóa.
Ví dụ: s=“lop toan hoc mai hoc mai”;
s.erase(4,6); kết quả “lophoc
mai hoc mai”;
10. Phương thức tìm kiếm xem một ký tự hay một xâu nào ó có xuất hiện trong
một chuỗi xâu cho trước hay không. Có nhiều cách dùng phương thức này:
s.find(t);
Tìm vị trí xuất hiện ầu tiên của xâu t trong xâu s, nếu không có trả về -1
ìm vị trí xuất hiện cuối cùng của xâu t
trong xâu s
ìm ký tự ch kể từ vị trí pos ến cuối
chuỗi str
Nếu không quy ịnh giá trị pos thì hiểu mặc nhiên là 0; nếu tìm có thì phương thức
trả về vị trí xuất hiện ầu tiên, ngược lại trả về giá trị -1.
Đổi xâu sang chữ hoa: toupper(s[i]); for (int i=0; i<n; i++)
s[i]=toupper(s[i]);
Đổi xâu sang chữ thường: tolower(s[i]);
CHUỖI KÍ TỰ
1. Định nghĩa : Xâu kí tự là một dãy kí tự trong C++ xâu kí tự ược ịnh nghĩa như
mảng kí tự. Kí tự ầu tiên chỉ số là 0. Kết thúc bởi kí tự có mã 0. Ví dụ
0 1 2 3 4 5
6 7 8 9
2. Khai báo: char s[205] ;
3. Một số lệnh cần ghi nhớ
+ cin>>s; ĐỌC cả xâu không có dấu cách.
+ gets(s) ; ọc vào xâu kí tự s có chứa dấu cách
+ cout<<s; in ra xâu không có dấu cách
+ puts(s) ;in ra xâu kí tự có chứa dấu cách (trên 1 dòng)
+ strcpy(s1,s2) ; chép xâu s2 và xâu s1 ;
+ scanf( %s,&s) ; nhập vào các xâu kí tự cùng dòng cách bởi khoảng trống +
prinft(%s,s) in ra xâu kí tự s, không xung dòng.
s.rfind(t);
T
str.find(int ch, int pos = 0); T
H
A
I
D
U
O
N
G
\0
lOMoARcPSD| 27879799
+ strlen(s) ; ộ dài của xâu kí tự (s lượng tự).
+ strrev(s) ; ảo ngược xâu s;
+ strstr(s1 ;s2) ; vị trí xuất hiện ầu tiên của s2 trong s1. +
strcat(s1,s2) ; ghép xâu s2 vào cuối xâu s1 + atoi(s) ; ổi
xâu kí tự thành số nguyên.
+ atof(s) ; ổi xâu tự thành số thực
+ itoa(n) ; ổi số thành xâu kí tự
Hàm strcmp:Công dụng: so sánh 2 chuỗi s1 và s2
Cấu trúc: int strcmp(char *s1,char *s2);
Hàm sẽ trả về 1 trong các giá trị sau:
Giá trị âm nếu chuỗi s1 nhỏ hơn chuỗi s2
Giá trị 0 nếu hai chuỗi bằng nhau
Giá trị dương nếu chuỗi s1 lớn hơn chuỗi s2
Ví dụ: int main() {
char str1[20], str2[20];
printf("Nhap chuoi 1: ");
gets(str1); printf("Nhap
chuoi 2: "); gets(str2);
if (strcmp(str1, str2) == 0)
{ printf("2 chuoi bang nhau."); }
else if (strcmp(str1, str2) > 0)
{ printf("Chuoi 1 lon hon chuoi
2");
} else {
printf("Chuoi 1 nho hon chuoi 2");
}
return
0; }
Hàm strlwr: Công dụng: chuyển tất cả các kí tự chuỗi về chữ thường
Cấu trúc: p=strlwr(s); chuyển các kí tự trong s thành in thường trong p.
Hàm strupr: Công dụng: chuyển tất cả các kí tự chuỗi thường về chữ hoa
Cấu trúc p=strupr(s); p là xâu in hoa
| 1/3

Preview text:

lOMoAR cPSD| 27879799 XÂU KÍ TỰ
1. Khai báo xâu: string ; Ví dụ: string s,p;
2. Truy cập ến phần tử của xâu: [chỉ số];
Ví dụ s= “lop 11 Tin”; s[0]= ‘l’; s[7]= ‘T’;
Chú ý: Kí tự ầu tiên trong xâu có ịa chỉ là 0
3. Độ dài của xâu: .length()
Ví dụ int n=s.length(); có kết quả n=10;
4. Phép ghép xâu: Dùng phép “+” ể ghép xâu s=s1+s2;
Ví dụ s1= “hoc” s2= “bai”;
S=s1+s2 cho kết quả “hocbai”;
5. Đọc vào một xâu: 2 cách + getline(cin,s);
+ cin s; nếu xâu s có chứa dấu cách thì lệnh cin sẽ không ọc hết các kí tự sau dấu cách.
-Ví dụ: s= “lop 11 toan”
- Nếu ọc bằng lệnh cin>>s; thì s= “lop”
6. In ra xâu: Có 2 cách
-Cách 1: cout<-Cách 2: for (int i=0; ió n là ộ dài của xâu s. In ra từng kí tự.
7. sao chép xâu s.substr(vt, n);
Trích ra chuỗi con gồm n kí tự của một chuỗi cho trước kể từ kí tự ở vị trí vt. Ví dụ : s= “lop 11 toan”;
s1=s.substr(5,4) ; cho kết quả s1=“11 t”; Nếu
không có tham số n thì sao chép hết.
8. chèn xâu kí tự vào vị trí nào ó của xâu s cho trước. Có nhiều cách dùng
phương thức này: + s.insert(vt,x);
Ý nghĩa : chèn xâu x vào xâu s từ vị trí thứ vt.
Ví dụ: s= “lop toan”; x= “11”;
s.insert(5,x); kết quả “lop 11toan”;
+ s.insert(vt,n,x); chèn n lần kí tự ch vào xâu s từ vị trí vt.
Ví dụ: s= “lop toan”; x= “ hoc mai”; lOMoAR cPSD| 27879799
s.insert(s.length(),3,x); => “lop toan hoc mai hoc mai hoc mai”;
9. Phương thức xóa: s.erase(int pos, int n); xóa n ký tự của xâu s kể từ vị trí pos;
Nếu không quy ịnh giá trị n thì tất cả các ký tự của s từ vị trí pos trở i sẽ bị xóa.
Ví dụ: s=“lop toan hoc mai hoc mai”;
s.erase(4,6); kết quả “lophoc mai hoc mai”;
10. Phương thức tìm kiếm xem một ký tự hay một xâu nào ó có xuất hiện trong
một chuỗi xâu cho trước hay không. Có nhiều cách dùng phương thức này: ✓ s.find(t);
Tìm vị trí xuất hiện ầu tiên của xâu t trong xâu s, nếu không có trả về -1 s.rfind(t); ✓
ìm vị trí xuất hiện cuối cùng của xâu t T trong xâu s
str.find(int ch, int pos = 0); T ✓
ìm ký tự ch kể từ vị trí pos ến cuối chuỗi str
Nếu không quy ịnh giá trị pos thì hiểu mặc nhiên là 0; nếu tìm có thì phương thức
trả về vị trí xuất hiện ầu tiên, ngược lại trả về giá trị -1. ✓
Đổi xâu sang chữ hoa: toupper(s[i]); for (int i=0; is[i]=toupper(s[i]); ✓
Đổi xâu sang chữ thường: tolower(s[i]); CHUỖI KÍ TỰ
1. Định nghĩa : Xâu kí tự là một dãy kí tự trong C++ xâu kí tự ược ịnh nghĩa như
mảng kí tự. Kí tự ầu tiên có chỉ số là 0. Kết thúc bởi kí tự có mã 0. Ví dụ 0 1 H A I D U O N G \0 2 3 4 5 6 7 8 9
2. Khai báo: char s[205] ;
3. Một số lệnh cần ghi nhớ
+ cin>>s; ĐỌC cả xâu không có dấu cách.
+ gets(s) ; ọc vào xâu kí tự s có chứa dấu cách
+ cout<+ puts(s) ;in ra xâu kí tự có chứa dấu cách (trên 1 dòng)
+ strcpy(s1,s2) ; chép xâu s2 và xâu s1 ;
+ scanf( %s,&s) ; nhập vào các xâu kí tự cùng dòng cách bởi khoảng trống +
prinft(%s,s) in ra xâu kí tự s, không xuống dòng. lOMoAR cPSD| 27879799
+ strlen(s) ; ộ dài của xâu kí tự (số lượng kí tự).
+ strrev(s) ; ảo ngược xâu s;
+ strstr(s1 ;s2) ; vị trí xuất hiện ầu tiên của s2 trong s1. +
strcat(s1,s2) ; ghép xâu s2 vào cuối xâu s1 + atoi(s) ; ổi
xâu kí tự thành số nguyên.
+ atof(s) ; ổi xâu kí tự thành số thực
+ itoa(n) ; ổi số thành xâu kí tự
Hàm strcmp:Công dụng: so sánh 2 chuỗi s1 và s2
• Cấu trúc: int strcmp(char *s1,char *s2);
Hàm sẽ trả về 1 trong các giá trị sau:
• Giá trị âm nếu chuỗi s1 nhỏ hơn chuỗi s2
• Giá trị 0 nếu hai chuỗi bằng nhau
• Giá trị dương nếu chuỗi s1 lớn hơn chuỗi s2 Ví dụ: int main() { char str1[20], str2[20]; printf("Nhap chuoi 1: "); gets(str1); printf("Nhap chuoi 2: "); gets(str2); if (strcmp(str1, str2) == 0)
{ printf("2 chuoi bang nhau."); }
else if (strcmp(str1, str2) > 0)
{ printf("Chuoi 1 lon hon chuoi 2"); } else {
printf("Chuoi 1 nho hon chuoi 2"); } return 0; }
Hàm strlwr: Công dụng: chuyển tất cả các kí tự chuỗi về chữ thường •
Cấu trúc: p=strlwr(s); chuyển các kí tự trong s thành in thường trong p.
Hàm strupr: Công dụng: chuyển tất cả các kí tự chuỗi thường về chữ hoa •
Cấu trúc p=strupr(s); p là xâu in hoa