
Tổng kết về ký tự và xâu ký tự
Thông tin tài liệu:
Nội dung trích xuất từ tài liệu:
Tổng kết về ký tự và xâu ký tự1 | C-string vs STLstringTổng kết về ký tự và xâu ký tựI.Kiểu ký tự char• Giá trị nguyên biểu diễn dưới dạng một ký tự viết trong 2 dấu nháyvd: z=122 là giá trị nguyên của ký tự z (ký tự thứ 122 trong bảng mã ASCII)• Các hàm liên quan đến kiểu char được định nghĩa trong ctype.hNhận dạng các ký tự:int isalnum (char c); là số hoặc chữint isalpha (char c); là chữ cáiint isascii (char c); là một ký tự trên bàn phím (mã ASCII c; if (isdigit(c)) cout 2 | C-string vs STLstring dấu nháy kép dấu hỏi \ kí tự xổ ngượcChuyển đổi case của kí tự (Character Case Conversion)int tolower (char c);//chuyen sang chu hoaint toupper (char c);//chuyen sang chu thuongVí dụ: char c = A; c=tolower(c); cout 3 | C-string vs STLstring//char mystring[6];mystring = Hello;mystring[] = Hello;mystring = { H, e, l, l, o, };Chúng ta chỉ có thể gán nhiều hằng cho một mảng vào lúc khởi tạo nó. Nguyên nhân là một thao tác gán (=) khôngthể nhận vế trái là cả một mảng mà chỉ có thể nhận một trong những phần tử của nó. Vào thời điểm khởi tạo mảng làmột trường hợp đặc biệt, vì nó không thực sự là một lệnh gán mặc dù nó sử dụng dấu (=).Tuy nhiên C++ cho phép ta gán 2 mảng tĩnh có cùng kích thước như sau:char a[]=Hello, b[6];//hello và ký tự null tổng cộng 6 ký tự//khai báo như trên thì 2 mảng tĩnh có cùng kích thước b=a;Phép gán này tương đương đoạn chương trình sau:int i=0;while ( a[i] 4 | C-string vs STLstring• Đọc dữ liệu cho mảng ký tự:char word[20];cin >> word;- Đọc xâu không chấp nhận khoảng trống.- Xâu có thể vượt quá kích thước mảng.cin >> setw( 20 ) >> word; // đọc 19 ky tu (1 đe danh cho )Đọc xâu với khoảng trống dùng 1 trong các cú pháp sau:gets(array);// trong stdio.h, không được khuyến khích sử dụngcin.get(array);cin.get(array,size);cin.getline(array,delimiter= );//ky tu delimiter mac dinh la - xuong dongcin.getline(array, size, delimiter= );– Lưu input vào mảng array đến khi xảy ra một trong hai trường hợp+ Kích thước dữ liệu đạt đến size –1+ Ký tự delimiter được nhập vàoLưu ý :delimiter= thì dấu = là tham số mặc định trong C++, tức là nếu không có tham số này thì trình biên dịch sẽhiểu là để mặc địnhVí dụ:char sentence[ 80 ];cin.getline( sentence, 80);//dung delimiter mac dinhĐối với các hàm get hay getline ta hoàn toàn có thể kết hợp với toán tử >> như thế này:cout age >> job;Nếu một chương trình bị treo hay kết thúc bất thường khi làm việc với xâu thường là do một số ký tự vẫn còn trongvùng đệm. Kết quả là chương trình có vẻ kết thúc sớm hơn mong muốn.Hàm fflush() hay cin.ignore() sẽ giải quyết vấn đề này. Nó sẽ làm sạch vùng đệm và chép tất cả những gì có trongvùng đệm ra ngoài ( trong ví dụ ở trên thì nó không thật sự cần thiết lắm )III.Thư viện xử lý xâu Cung cấp các hàm: Thao tác với dữ liệu kiểu xâu So sánh xâu Tìm kiếm trên xâu các ký tự hoặc xâu khác Chia xâu thành các từ tố (tokenize strings)1.Một số hàm cơ bảnChuyển chuỗi xâu sang chữ thường5 | C-string vs STLstringchar *strlwr(char *s);Ví dụ:char *s = Borland C;s = strlwr(s); //ket qua s = borland cChuyển chuỗi xâu sang chữ hoachar *strupr(char *s);Ví dụ:char *s = Borland C;s = strlwr(s); //ket qua s = BORLAND CXác định độ dài xâusize_t strlen( const char *s )//tra ve so ky tu cua xau khong tinh đen ky tu Ví dụ: char s[] = This is a string; cout 6 | C-string vs STLstringĐó là lý do khi thay đổi xâu a ta lại nhận được sự thay đổi trên cả a và b.Đây là điều mà chúng ta không muốn.Giải pháp đúng cho trường hợp này là sao chép nội dung bằng 1 vòng while()//char *a=Hello,b[]=World;int i=0;while ( a[i] != NULL ) b[i]=a[i++];b[i]=a[i];//ky tu nullNhưng tiện hơn là dùng hàm chuẩn:char *strcpy( char *s1, const char *s2 );-Copy tham số thứ hai vào tham số thứ nhất–Tham số thứ nhất phải có kích thước đủ lớn để chứa xâu và ký tự nullchar *strncpy( char *s1, const char *s2, size_t n );- Xác định rõ số ký tự được copy từ xâu vào mảng- Không nhất thiết copy ký tự null#include #include #include //chua prototypes (khai bao) strcpy & strncpyvoid main(){ char x[] = Happy Birthday to You; char y[ 25 ]; char z[ 15 ]; strcpy( y, x ); // copy contents of x into y cout 7 | C-string vs STLstringchar *strncat( char *s1, const char *s2, size_t n )- Thêm n ký tự của tham số thứ hai vào sau tham số thứ nhất- Thêm ký tự null vào kết quảvoid main(){ char s1[ 20 ] = Happy ; char s2[] = New Year ; char s3[ 40 ] = ; cout 8 | C-string vs STLstring- So sánh n ký tự đầu tiên- Dừng so sánh nếu gặp ký ...
Tìm kiếm theo từ khóa liên quan:
Kiểu ký tự char các ký tự điều khiển xâu ký tự gán giá trị cho xâu thư viện xử lý xâu so sánh xâuTài liệu có liên quan:
-
Bài giảng Tin đại cương: Bài 9 - Vũ Thương Huyền
28 trang 46 0 0 -
Bài giảng Lập trình nâng cao (Advanced Programming) - Chương 7: Con trỏ
56 trang 39 0 0 -
Giáo trình Cơ sở lập trình: Phần 2
114 trang 31 0 0 -
Tài liệu học tập môn Tin cơ sở: Phần 2 - Phùng Thị Thu Hiền
80 trang 29 0 0 -
107 trang 26 0 0
-
Bài giảng Lập trình cơ bản: Ngôn ngữ lập trình C
80 trang 25 0 0 -
Dữ liệu kiểu mảng, xâu ký tự...
13 trang 24 0 0 -
Chương 4: Ngôn ngữ kịch bản VBScript
41 trang 23 0 0 -
Bài giảng Tin học đại cương: Chương 5 - Nguyễn Duy Hiệp
27 trang 23 0 0 -
Giáo trình Bài giảng Kỹ thuật lập trình: Phần 1
99 trang 20 0 0 -
Bài giảng Tin học đại cương - Bài 6: Xâu ký tự
37 trang 19 0 0 -
29 trang 19 0 0
-
Bài giảng Tin học căn bản (Phần 3): Chương 5 - Ngô Văn Linh
36 trang 18 0 0 -
Tài liệu bồi dưỡng học sinh giỏi Tin học THCS
25 trang 18 0 0 -
Bài giảng Kỹ thuật lập trình - Chương 6: Con trỏ
56 trang 16 0 0 -
Bài giảng Tin học đại cương: Bài 7 - Phạm Xuân Cường
23 trang 16 0 0 -
Bài giảng Lập trình cơ bản: Phần 1 - ĐH Sư phạm kỹ thuật Nam Định
125 trang 16 0 0 -
Bài giảng Lập trình C: Chương 5 - Ngô Công Thắng
28 trang 15 0 0 -
Bài giảng Lập trình C: Chương 7 - Ngô Công Thắng
54 trang 15 0 0 -
Bài giảng Tin học đại cương: Bài 7 - Nguyễn Mạnh Hiển
20 trang 15 0 0