You are on page 1of 4

String C++, Trang 1

Chui k t trong C++


Kiu chui ca C v hn ch Cc chng trnh C++ c th s dng chui theo cch thc c ca Ngn ng C: mng cc k t kt thc bi k t m ASCII l 0 (k t \0) cng vi cc hm th vin khai bo trong <string.h> . C nhiu bt tin khi dng theo cch thc ny: Ngi lp trnh phi ch ng kim sot b nh cp pht cho chui k t. Ni chung l phi am hiu v rt thng tho v k thut dng b nh v con tr th chng trnh mi trnh c cc li v k thut;

Khng th gn gi tr hay s dng php ton + (ghp chui) v cc php ton so snh nh: > (ln hn), < (nh hn), m phi gi cc hm th vin trong <string.h>; Nu dng k thut cp pht ng th phi qun xuyn vic cp thm b nh khi chui dn ra (chng hn do ghp chui) v phi hy b nh (khi khng dng na) trnh vic cn kit b nh ca my tnh trong trng hp c nhiu chng trnh hot ng ng thi. Ghi ch: Cng c th dng cc php ton >> (extraction) v << (insertion) tng ng vi cin v cout cho chui k t c ca Ngn ng C, xem chng trnh sau y: // Old style string in C #include <iostream.h> void main () { const int MAXSIZE=256; char str[MAXSIZE]; cout << Input a string: ; cin.getline(str, MAXSIZE); cout << Your string: << str << endl; cout << Input a word: ; cin >> str; cout << Your word: << str << endl; } Ch rng lnh cin >> str; ly cc k t a vo chui str n khi gp mt khong trng (blank) th dng. Trong khi nu dng cin.getline( ) nh trong chng trnh trn th c cc khong trng cng c ly a vo chui str (n khi nhn enter th mi dng) v mc nhin th k t ngt (delimeter) l \n (newline, k t xung dng). Thc ra lnh ni trn tng ng vi lnh: cin.getline(str, MAXSIZE, \n); Nu chng ta thay lnh ny bi: cin.getline(str, MAXSIZE, ); (k t ngt l blank) th s tng t vi: cin >> str; Trong chng trnh ni trn th di ti a c th c ca chui k t l MAXSIZE 1 (v cn dnh 1 byte cho k t kt thc chui).

Bi c thm cho mn Lp trnh HT vi C++ Bin son: Trn an Th, Khoa CNTT, Trng i hc KHTN Tp.HCM

String C++, Trang 2

Kiu chui string trong th vin STL ca C++ Th vin chun STL (Standard Template Library) ca C++ c h tr kiu string cng vi cc php ton v phng thc kh tin li cho ngi lp trnh. Hin ti th Visual C++ v hu ht cc trnh bin dch C++ trn Linux/Unix u c sn th vin STL nn ta c th dng kiu string. Ring cc phin bn hin nay ca Borland C++ th dng mt th vin template ring m khng bao gm th vin STL. Chng trnh sau y cho thy vic s dng kiu string nh vo dng th vin STL kh n gin v tin li. #include <string> #include <iostream> using namespace std; void strSort (int n, string str[]); void main () { string str1(012); string str2(345); string s; s=str1+str2; cout << Result: << s << endl; string country[] = {Viet nam, Lao, Campuchia, Thai lan, Trung quoc}; int n=5; strSort(n, country); cout << After sorting << endl; for (int i=0; i<n; i++) cout << \t << country[i] << endl; } void strSort (int n, string str[]) { for (int i=0; i<n-1; i++) for (int j=i+1; j<n; j++) if (str[i] > str[j]) { string s = str[i]; str[i] = str[j]; str[j] = s; } } Trong chng trnh trn, cn ch cc im sau: - Cc ch th include v using namespace cn thit khai bo s dng kiu string; - C th khi ng v sao chp gi tr nh php gn =, c th dng php + ghp chui; - Trong hm strSort( ) ta c th dng php so snh > (ln hn) so snh 2 bin chui; - C th dng ton t << (insertion) vi cout xut mt chui ra mn hnh nhp xut.
Bi c thm cho mn Lp trnh HT vi C++ Bin son: Trn an Th, Khoa CNTT, Trng i hc KHTN Tp.HCM

String C++, Trang 3

Cng c th dng ton t >> (extraction) vi cin nhp mt chui k t n khi gp mt khong trng th dng.

Cc phng thc/php ton tin ch ca kiu string


Kiu string ca STL h tr cc nhm phng thc v php ton tin ch sau y. a) Cc php ton v phng thc c bn Php cng (+) dng ghp hai chui v cng ghp mt k t vo chui; Cc php so snh theo th t t in: == (bng nhau), != (khc nhau), > (ln hn), >= (ln hn hay bng), < (nh hn), <= (nh hn hay bng); Phng thc length( ) v php ly ch s [ ] duyt tng k t ca chui: nu s l bin kiu string th s[i] l k t th i ca s vi 0 i <s.length( ); Php gn (=) dng gn bin kiu string bng mt hng chui, chng hn: { char st[]=ABCDEF; string s; s=XYZ; cout << s << endl; s=st; cout << s.length() << : << s << endl; // } b) Cc phng thc chn, xa, ly chui con

Phng thc substr(int pos, int nchar) trch ra chui con ca mt chui cho trc, v d str.substr(2,4) tr v chui con gm 4 k t ca chui str k t k t v tr th 2 (k t u tin ca chui v tr 0). Phng thc insert( ) chn thm k t hay chui vo mt v tr no ca chui str cho trc. C nhiu cch dng phng thc ny: str.insert(int pos, char* s): chn s (mng k t kt thc \0) vo v tr pos ca str; str.insert(int pos, string s): chn chui s (kiu string) vo v tr pos ca chui str; str.insert(int pos, int n, int ch): chn n ln k t ch vo v tr pos ca chui str;

Phng thc str.erase(int pos, int n) xa n k t ca chui str k t v tr pos; nu khng quy nh gi tr n th tt c cc k t ca str t v tr pos tr i s b xa. c) Cc phng thc tm kim v thay th

Phng thc find( ) tm kim xem mt k t hay mt chui no c xut hin trong mt chui str cho trc hay khng. C nhiu cch dng phng thc ny: str.find(int ch, int pos = 0): tm k t ch k t v tr pos n cui chui str str.find(char *s, int pos = 0): tm s (mng k t kt thc \0) k t v tr pos n cui str.find(string& s, int pos = 0): tm chui s k t v tr pos n cui chui. Nu khng quy nh gi tr pos th hiu mc nhin l 0; nu tm c th phng thc tr v v tr xut hin u tin, ngc li tr v gi tr -1.

Phng thc replace( ) thay th mt on con trong chui str cho trc (on con k t mt v tr pos v m ti nchar k t k t v pha cui chui) bi mt chui s no , hoc bi n k t ch no . C nhiu cch dng, th t tham s nh sau: str.replace(int pos, int nchar, char *s);
Bi c thm cho mn Lp trnh HT vi C++ Bin son: Trn an Th, Khoa CNTT, Trng i hc KHTN Tp.HCM

String C++, Trang 4

str.replace(int pos, int nchar, string s); str.replace(int pos, int nchar, int n, int ch);

d) Mt s phng thc khc


Cn nhiu phng thc tin ch khc nh: append( ), rfind( ), find_first_not_of( ), find_last_not_of( ), swap( ), c_str( ). Cch dng cc hm ny u c trnh by trong h thng gip ca cc mi trng c h tr STL. Ngoi ra cc phng thc nh find_first_of( ) li tng t nh find( ); find_last_of( ) li tng t nh rfind( ).

Bi c thm cho mn Lp trnh HT vi C++ Bin son: Trn an Th, Khoa CNTT, Trng i hc KHTN Tp.HCM

You might also like