Bài giảng C căn bản - Chương 2: Kỹ thuật xử lý chuỗi
Chuỗi được xem như là một mảng 1 chiều gồm các phần tử có kiểu char như mẫu tự, con số và bất cứ ký tự đặc biệt như +, -, *, /, $, #,
Chuỗi ký tự (string) là một dãy kí tự tuyến tính đặc trưng cho một kiểu dữ liệu. Chuỗi ký tự có thể biểu diễn bằng chuỗi nhị phân.
Chuỗi nhị phân là một dãy bao gồm các ký tự 0 và 1. Chuỗi nhị phân là một kiểu chuỗi ký tự đặc biệt.
Ch ương 2 Kỹ thuật xử lý Chuỗi Chuỗi ký tự Chuỗi được xem như là một mảng 1 chiều gồm các phần tử có kiểu char như mẫu tự , con số và bất cứ ký tự đặc biệt như +, -, *, /, $, #, Chuỗi ký tự (string) là một dãy kí tự tuyến tính đặc trưng cho một kiểu dữ liệu . Chuỗi ký tự có thể biểu diễn bằng chuỗi nhị phân . Chuỗi nhị phân là một dãy bao gồm các ký tự 0 và 1. Chuỗi nhị phân là một kiểu chuỗi ký tự đặc biệt . 2 Chuỗi ký tự Khởi tạo chuỗi ký tự nh ư mảng thông th ườ ng có độ dài cụ thể : char s[10] = {‘T’, ‘H’, ‘C’, ‘S’, ‘ ’, ‘A’, ‘\0’}; char s[10] = “THCS A”; // Tự độ ng thêm ký tự ‘\0’ Khởi tạo chuỗi ký tự bằng cách tự xác đị nh độ dài : char s[ ] = {‘T’, ‘H’, ‘C’, ‘S’, ‘ ’, ‘A’, ‘\0’}; char s[ ] = “THCS A”; // Tự độ ng thêm ký tự ‘\0’ Độ dài chuỗi = kích th ướ c mảng – 1, ví dụ : char hoten[30]; // Dài 29 ký tự char ngaysinh[9]; // Dài 8 ký tự 3 Chuỗi ký tự Ví dụ : Sử dụng hàm strcpy #include #include int main () { char szMyName [20]; strcpy ( szMyName,"J . Soulie "); cout << szMyName ; return 0; } 4 Chuỗi ký tự Ví dụ:Tạo giá trị cho chuỗi ký tự #include void setstring (char szOut [], char szIn []) { int n=0; do { szOut[n] = szIn[n]; n++; } while (szIn[n] != 0); } int main () { char szMyName [20]; setstring (szMyName,"J. Soulie"); cout << szMyName; return 0; } 5 Chuỗi ký tự Ví dụ : Sử dụng hàm strcpy #include #include int main () { char szMyName [20]; strcpy ( szMyName,"J . Soulie "); cout << szMyName ; return 0; } 6 Chuỗi ký tự Sử dụng cin.getline #include int main () { char mybuffer [100]; cout << "What's your name? "; cin.getline (mybuffer,100); cout << "Hello " << mybuffer << ".\n"; cout << "Which is your favourite team? "; cin.getline (mybuffer,100); cout << "I like " << mybuffer << " too.\n"; return 0; } 7 Chuỗi ký tự atoi : chuyển chuỗi ký tự thành kiểu int . atol : chuyển chuỗi ký tự thành kiểu long . atof : chuyển chuỗi ký tự thành kiểu float . 8 Chuỗi ký tự char* strcat (char* dest , const char* src ); Gắn thêm chuỗi src vào phía cuối của dest . Trả về dest . int strcmp (const char* string1 , const char* string2 ); So sánh hai xâu string1 và string2 . Trả về 0 nếu hai xâu là bằng nhau . char* strcpy (char* dest , const char* src ); Copy nội dung của src cho dest . Trả về dest . size_t strlen (const char* string ); Trả về độ dài của string . 9 Chuỗi ký tự char * strdup(const char *s); Tạo bản sao của một chuỗi s cho tr ướ c. Hàm sẽ tự tạo vùng nhớ dài strlen(s ) + 1 (bytes) để chứa chuỗi s. Phải tự hủy vùng nhớ này khi không sử dụng nữa . Nếu thành công trả về con trỏ đến vùng nhớ chứa chuỗi bản sao . Ngược lại , trả về NULL. char * strlwr(char *s) Chuyển chuỗi s thành chuỗi th ườ ng . char * strupr(char *s) Chuyển chuỗi s thành chuỗi in hoa . char * strrev(char *s) Đảo ng ượ c thứ tự các ký tự trong chuỗi s ( trừ ký tự kết thúc chuỗi ). 10 Chuỗi ký tự Hạn chế của kiểu chuỗi trong C Phải chủ động kiểm soát bộ nhớ cấp phát cho chuỗi ký tự Không thể gán giá trị hay sử dụng phép toán + ( ghép chuỗi ) và các phép toán so sánh như : > ( lớn hơn ), . Kiểu chuỗi string trong thư viện STL của C++ Thư viện chuẩn STL (Standard Template Library) của C++ có hỗ trợ kiểu string cùng với các phép toán và phương thức khá tiện lợi cho người lập trình . 11 Chuỗi ký tự Hạn chế của kiểu chuỗi trong C Phải chủ động kiểm soát bộ nhớ cấp phát cho chuỗi ký tự Không thể gán giá trị hay sử dụng phép toán + ( ghép chuỗi ) và các phép toán so sánh như : > ( lớn hơn ), . Kiểu chuỗi string trong thư viện STL của C++ Thư viện chuẩn STL (Standard Template Library) của C++ có hỗ trợ kiểu string cùng với các phép toán và phương thức khá tiện lợi cho người lập trình . 12 Q&A 13
File đính kèm:
- bai_giang_c_can_ban_chuong_2_ky_thuat_xu_ly_chuoi.ppt