Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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' };
char mystring [] = " Hello";

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";
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';
mystring[1] = 'e';
mystring[2] = 'l';
mystring[3] = 'l';
mystring[4] = 'o';
mystring[5] = '\0';

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ụ:

// setting value to string #include < iostream.h> #include < string.h> int main (){ char szMyName [20]; strcpy (szMyName, " J. Soulie"); cout < < szMyName; return 0; } J. Soulie

Đ ể ý 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 :

// setting value to string #include < iostream.h> 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; } J. Soulie

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:

// cin with strings #include < iostream.h> 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; } What's your name? Juan Hello Juan. Which is your favourite team? Inter Milan I like Inter Milan too.

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ó:

  • Nó chỉ có thể nhậ n nhữ ng từ đ ơ n (khô ng nhậ n đ ư ợ c cả câ u) vì phư ơ ng thứ c nà y sử dụ ng kí tự trố ng(bao gồ m cả dấ u cá ch, dấ u tab và dấ u xuố ng dò ng) là m dấ u hiệ u kế t thú c..
  • Nó khô ng cho phé p chỉ đ ị nh kí ch thư ớ c cho bộ đ ệ m. Chư ơ ng trì nh củ a bạ n có thể chạ y khô ng ổ n đ ị nh nế u dữ liệ u và o lớ n hơ n kí ch cỡ củ a mả ng chứ a nó.

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 > > .






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.