Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Khởi tạo các xâu kí tự.
Vì nhữ ng xâ u kí tự là nhữ ng mả ng bì nh thư ờ ng nê n chú ng cũ ng như cá c mả ng khá c. Ví dụ, nế u chú ng ta muố n khở i tạ o mộ t xâ u kí tự vớ i nhữ ng giá trị xá c đ ị nh chú ng ta có thể là m đ iề u đ ó tư ơ ng tự như vớ i cá c mả ng khá c: char mystring[] = { 'H', 'e', 'l', 'l', 'o', '\0' }; Tuy nhiê n, chú ng ta có thể khở i tạ o giá trị cho mộ t xâ u kí tự bằ ng cá ch khá c: sử dụ ng cá c hằ ng xâ u kí tự. Trong cá c biể u thứ c chú ng ta đ ã sử dụ ng trong cá c ví dụ trong cá c chư ơ ng trư ớ c cá c hằ ng xâ u kí tự đ ể xuấ t hiệ n và i lầ n. Chú ng đ ư ợ c biể u diễ n trong cặ p ngoặ c ké p (" ), ví dụ: " the result is: " là mộ t hằ ng xâ u kí tự chú ng ta sử dụ ng ở mộ t số chỗ. Khô ng giố ng như dấ u nhá y đ ơ n (') cho phé p biể u diễ n hằ ng kí tự, cặ p ngoặ c ké p (" ) là hằ ng biể u diễ n mộ t chuỗ i kí tự liê n tiế p, và ở cuố i chuỗ i mộ t kí tự null ('\0') luô n đ ư ợ c tự đ ộ ng thê m và o. Vì vậ y chú ng ta có thể khở i tạ o xâ u mystring theo mộ t trong hai cá ch sau đ â y: char mystring [] = { 'H', 'e', 'l', 'l', 'o', '\0' }; Trong cả hai trư ờ ng hợ p mả ng (hay xâ u kí tự) mystring đ ư ợ c khai bá o vớ i kí ch thư ớ c 6 kí tự: 5 kí tự biể u diễ n Hello cộ ng vớ i mộ t kí tự null. Trư ớ c khi tiế p tụ c, tô i cầ n phả i nhắ c nhở bạ n rằ ng việ c gá n nhiề u hằ ng như việ c sử dụ ng dấ u ngoặ c ké p (" ) chỉ hợ p lệ khi khở i tạ o mả ng, tứ c là lú c khai bá o mả ng. Cá c biể u thứ c trong chư ơ ng trì nh như: mystring = " Hello"; là khô ng hợ p lệ, cả câ u lệ nh dư ớ i đ â y cũ ng vậ y: mystring = { 'H', 'e', 'l', 'l', 'o', '\0' }; Vậ y hã y nhớ: 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ô ng thể 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 bằ ng ( = ). Gá n giá trị cho xâ u kí tự Vì vế trá i củ a mộ t lệ nh gá n chỉ có thể là mộ t phầ n tử củ a mả ng chứ khô ng thể là cả mả ng, chú ng ta có thể gá n mộ t xâ u kí tự cho mộ t mả ng kiể u char sử dụ ng mộ t phư ơ ng phá p như sau: mystring[0] = 'H'; Như ng rõ rà ng đ â y khô ng phả i là mộ t phư ơ ng phá p thự c tế. Đ ể gá n giá trị cho mộ t xâ u kí tự, chú ng ta có thể sử dụ ng loạ t hà m kiể u strcpy (str ing c o py), hà m nà y đ ư ợ c đ ị nh nghĩ a trong string.h và có thể đ ư ợ c gọ i như sau: strcpy ( string1 , string2 ); Lệ nh nà y copy nộ i dung củ a string2 sang string1 . string2 có thể là mộ t mả ng, con trỏ hay mộ t hằ ng xâ u kí tự, bở i vậ y lệ nh sau đ â y là mộ t cá ch đ ú ng đ ể gá n xâ u hằ ng " Hello" cho mystring : strcpy (mystring, " Hello"); Ví dụ:
Đ ể ý rằ ng chú ng ta phả i include file < string.h> đ ể có thể sử dụ ng hà m strcpy . Mặ c dù chú ng ta luô n có thể viế t mộ t hà m đ ơ n giả n như hà m setstring dư ớ i đ â y đ ể thự c hiệ n mộ t thao tá c giố ng như strcpy :
Mộ t phư ơ ng thứ c thư ờ ng dù ng khá c đ ể gá n giá trị cho mộ t mả ng là sử dụ ng trự c tiế p dò ng nhậ p dữ liệ u ( cin ). Trong trư ờ ng hợ p nà y giá trị củ a xâ u kí tự đ ư ợ c gá n bở i ngư ờ i dù ng trong quá trì nh chư ơ ng trì nh thự c hiệ n. Khi cin đ ư ợ c sử dụ ng vớ i cá c xâ u kí tự nó thư ờ ng đ ư ợ c dù ng vớ i phư ơ ng thứ c getline củ a nó, phư ơ ng thứ c nà y có thể đ ư ợ c gọ i như sau: cin.getline (char buffer [], int length , char delimiter = ' \n'); trong đ ó buffer (bộ đ ệ m) là đ ị a chỉ nơ i sẽ lư u trữ dữ liệ u và o (như là mộ t mả ng chẳ ng hạ n), length là đ ộ dà i cự c đ ạ i củ a bộ đ ệ m (kí ch thư ớ c củ a mả ng) và delimiter là kí tự đ ư ợ c dù ng đ ể kế t thú c việ c nhậ p, mặ c đ ị nh - nế u chú ng ta khô ng dù ng tham số nà y - sẽ là kí tự xuố ng dò ng ( '\n' ). Ví dụ sau đ â y lặ p lạ i tấ t cả nhữ ng gì bạ n gõ trê n bà n phí m. Nó rấ t đ ơ n giả n như ng là mộ t ví dụ cho thấ y bạ n có thể sử dụ ng cin.getline vớ i cá c xâ u kí tự như thế nà o:
Chú ý trong cả hai lờ i gọ i cin.getline chú ng ta sử dụ ng cù ng mộ t biế n xâ u ( mybuffer ). Nhữ ng gì chư ơ ng trì nh là m trong lờ i gọ i thứ hai đ ơ n giả n là thay thế nộ i dung củ a buffer trong lờ i gọ i cũ bằ ng nộ i dung mớ i. Nế u bạ n cò n nhớ phầ n nó i về giao tiế p vớ i, bạ n sẽ nhớ rằ ng chú ng ta đ ã sử dụ ng toá n tử > > đ ể nhậ n dữ liệ u trự c tiế p từ đ ầ u và o chuẩ n. Phư ơ ng thứ c nà y có thể đ ư ợ c dù ng vớ i cá c xâ u kí tự thay cho cin.getline . Ví dụ, trong chư ơ n trì nh củ a chú ng ta, khi chú ng ta muố n nhậ n dữ liệ u từ ngư ờ i dù ng chú ng ta có thể viế t: cin > > mybuffer; lệ nh nà y sẽ là m việ c như nó có nhữ ng hạ n chế sau mà cin.getline khô ng có:
Vì nhữ ng nguyê n nhâ n trê n, khi muố n nhậ p và o cá c xâ u kí tự bạ n nê n sử dụ ng cin.getline thay vì cin > > .
|