涔嬫墍浠ユ姏寮僣har*鐨勫瓧絎︿覆鑰岄夌敤C++鏍囧噯紼嬪簭搴撲腑鐨剆tring綾伙紝鏄洜涓轟粬鍜屽墠鑰呮瘮杈冭搗鏉ワ紝涓嶅繀鎷呭績鍐呭瓨鏄惁瓚沖銆佸瓧絎︿覆闀垮害絳夌瓑錛岃屼笖浣?
涓轟竴涓被鍑虹幇錛屼粬闆嗘垚鐨勬搷浣滃嚱鏁拌凍浠ュ畬鎴愭垜浠ぇ澶氭暟鎯呭喌涓?鐢氳嚦鏄?00%)鐨勯渶瑕併傛垜浠彲浠ョ敤 = 榪涜璧嬪兼搷浣滐紝== 榪涜姣旇緝錛?
鍋氫覆鑱旓紙鏄笉鏄緢綆鍗?錛夈傛垜浠敖鍙互鎶婂畠鐪嬫垚鏄疌++鐨勫熀鏈暟鎹被鍨嬨?br> 濂戒簡錛岃繘鍏ユ棰?#8230;……
棣栧厛錛屼負浜嗗湪鎴戜滑鐨勭▼搴忎腑浣跨敤string綾誨瀷錛屾垜浠繀欏誨寘鍚ご鏂囦歡
#include
1錛庡0鏄庝竴涓狢++瀛楃涓?br>澹版槑涓涓瓧絎︿覆鍙橀噺寰堢畝鍗曪細
string Str;
榪欐牱鎴戜滑灝卞0鏄庝簡涓涓瓧絎︿覆鍙橀噺錛屼絾鏃㈢劧鏄竴涓被錛屽氨鏈夋瀯閫犲嚱鏁板拰鏋愭瀯鍑芥暟銆備笂闈㈢殑澹版槑娌℃湁浼犲叆鍙傛暟錛屾墍浠ュ氨鐩存帴浣跨敤浜唖tring鐨勯粯璁ょ殑鏋勯犲嚱鏁幫紝榪欎釜鍑芥暟鎵浣滅殑灝辨槸鎶奡tr鍒濆鍖栦負涓涓┖瀛楃涓層係tring綾葷殑鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟濡備笅錛?br>a) string s; //鐢熸垚涓涓┖瀛楃涓瞫
b) string s(str) //鎷瘋礉鏋勯犲嚱鏁?鐢熸垚str鐨勫鍒跺搧
c) string s(str,stridx) //灝嗗瓧絎︿覆str鍐?#8220;濮嬩簬浣嶇疆stridx”鐨勯儴鍒嗗綋浣滃瓧絎︿覆鐨勫垵鍊?br>d) string s(str,stridx,strlen) //灝嗗瓧絎︿覆str鍐?#8220;濮嬩簬stridx涓旈暱搴﹂《澶歴trlen”鐨勯儴鍒嗕綔涓哄瓧絎︿覆鐨勫垵鍊?br>e) string s(cstr) //灝咰瀛楃涓蹭綔涓簊鐨勫垵鍊?br>f) string s(chars,chars_len) //灝咰瀛楃涓插墠chars_len涓瓧絎︿綔涓哄瓧絎︿覆s鐨勫垵鍊箋?br>g) string s(num,c) //鐢熸垚涓涓瓧絎︿覆錛屽寘鍚玭um涓猚瀛楃
h) string s(beg,end) //浠ュ尯闂碽eg;end(涓嶅寘鍚玡nd)鍐呯殑瀛楃浣滀負瀛楃涓瞫鐨勫垵鍊?br>i) s.~string() //閿姣佹墍鏈夊瓧絎︼紝閲婃斁鍐呭瓨
閮藉緢綆鍗曪紝鎴戝氨涓嶈В閲婁簡銆?br>2錛庡瓧絎︿覆鎿嶄綔鍑芥暟
榪欓噷鏄疌++瀛楃涓茬殑閲嶇偣錛屾垜鍏堟妸鍚勭鎿嶄綔鍑芥暟緗楀垪鍑烘潵錛屼笉鍠滄鎶婃墍鏈夊嚱鏁伴兘鐪嬪畬鐨勪漢鍙互鍦ㄨ繖閲屾壘鑷繁鍠滄鐨勫嚱鏁幫紝鍐嶅埌鍚庨潰鐪嬩粬鐨勮緇嗚В閲娿?br>a) =,assign() //璧嬩互鏂板?br>b) swap() //浜ゆ崲涓や釜瀛楃涓茬殑鍐呭
c) +=,append(),push_back() //鍦ㄥ熬閮ㄦ坊鍔犲瓧絎?br>d) insert() //鎻掑叆瀛楃
e) erase() //鍒犻櫎瀛楃
f) clear() //鍒犻櫎鍏ㄩ儴瀛楃
g) replace() //鏇挎崲瀛楃
h) + //涓茶仈瀛楃涓?br>i) ==,!=,<,<=,>,>=,compare() //姣旇緝瀛楃涓?br>j) size(),length() //榪斿洖瀛楃鏁伴噺
k) max_size() //榪斿洖瀛楃鐨勫彲鑳芥渶澶т釜鏁?br>l) empty() //鍒ゆ柇瀛楃涓叉槸鍚︿負絀?br>m) capacity() //榪斿洖閲嶆柊鍒嗛厤涔嬪墠鐨勫瓧絎﹀閲?br>n) reserve() //淇濈暀涓瀹氶噺鍐呭瓨浠ュ綰充竴瀹氭暟閲忕殑瀛楃
o) [ ], at() //瀛樺彇鍗曚竴瀛楃
p) >>,getline() //浠巗tream璇誨彇鏌愬?br>q) << //灝嗚皨鍊煎啓鍏tream
r) copy() //灝嗘煇鍊艱祴鍊間負涓涓狢_string
s) c_str() //灝嗗唴瀹逛互C_string榪斿洖
t) data() //灝嗗唴瀹逛互瀛楃鏁扮粍褰㈠紡榪斿洖
u) substr() //榪斿洖鏌愪釜瀛愬瓧絎︿覆
v)鏌ユ壘鍑芥暟
w)begin() end() //鎻愪緵綾諱技STL鐨勮凱浠e櫒鏀寔
x) rbegin() rend() //閫嗗悜榪唬鍣?br>y) get_allocator() //榪斿洖閰嶇疆鍣?br>涓嬮潰璇︾粏浠嬬粛錛?br>2錛? C++瀛楃涓插拰C瀛楃涓茬殑杞崲
C++鎻愪緵鐨勭敱C++瀛楃涓插緱鍒板搴旂殑C_string鐨勬柟娉曟槸浣跨敤data()銆乧_str()鍜宑opy()錛屽叾涓紝data()浠ュ瓧絎︽暟緇勭殑褰㈠紡
榪斿洖瀛楃涓插唴瀹癸紝浣嗗茍涓嶆坊鍔?#8217;\0’銆俢_str()榪斿洖涓涓互‘\0’緇撳熬鐨勫瓧絎︽暟緇勶紝鑰宑opy()鍒欐妸瀛楃涓茬殑鍐呭澶嶅埗鎴栧啓鍏ユ棦鏈夌殑
c_string鎴栧瓧絎︽暟緇勫唴銆侰++瀛楃涓插茍涓嶄互’\0’緇撳熬銆傛垜鐨勫緩璁槸鍦ㄧ▼搴忎腑鑳戒嬌鐢–++瀛楃涓插氨浣跨敤錛岄櫎闈炰竾涓嶅緱宸蹭笉閫夌敤c_string銆傜敱
浜庡彧鏄畝鍗曚粙緇嶏紝璇︾粏浠嬬粛鎺犺繃錛岃皝鎯寵繘涓姝ヤ簡瑙d嬌鐢ㄤ腑鐨勬敞鎰忎簨欏瑰彲浠ョ粰鎴戠暀璦(鍒版垜鐨勬敹浠剁)銆傛垜璇︾粏瑙i噴銆?br>2錛? 澶у皬鍜屽閲忓嚱鏁?br>
涓涓狢++瀛楃涓插瓨鍦ㄤ笁縐嶅ぇ灝忥細a)鐜版湁鐨勫瓧絎︽暟錛屽嚱鏁版槸size()鍜宭ength()錛屼粬浠瓑鏁堛侲mpty()鐢ㄦ潵媯鏌ュ瓧絎︿覆鏄惁涓虹┖銆?
b)max_size()
榪欎釜澶у皬鏄寚褰撳墠C++瀛楃涓叉渶澶氳兘鍖呭惈鐨勫瓧絎︽暟錛屽緢鍙兘鍜屾満鍣ㄦ湰韜殑闄愬埗鎴栬呭瓧絎︿覆鎵鍦ㄤ綅緗繛緇唴瀛樼殑澶у皬鏈夊叧緋匯傛垜浠竴鑸儏鍐典笅涓嶇敤鍏沖績浠栵紝搴旇澶у皬
瓚沖鎴戜滑鐢ㄧ殑銆備絾鏄笉澶熺敤鐨勮瘽錛屼細鎶涘嚭length_error寮傚父c)capacity()閲嶆柊鍒嗛厤鍐呭瓨涔嬪墠
string鎵鑳藉寘鍚殑鏈澶у瓧絎︽暟銆傝繖閲屽彟涓涓渶瑕佹寚鍑虹殑鏄痳eserve()鍑芥暟錛岃繖涓嚱鏁頒負string閲嶆柊鍒嗛厤鍐呭瓨銆傞噸鏂板垎閰嶇殑澶у皬鐢卞叾鍙傛暟鍐沖畾錛?
榛樿鍙傛暟涓?錛岃繖鏃跺欎細瀵箂tring榪涜闈炲己鍒舵х緝鍑忋?br>
榪樻湁蹇呰鍐嶉噸澶嶄竴涓婥++瀛楃涓插拰C瀛楃涓茶漿鎹㈢殑闂錛岃澶氫漢浼氶亣鍒拌繖鏍風殑闂?
棰橈紝鑷繁鍋氱殑紼嬪簭瑕佽皟鐢ㄥ埆浜虹殑鍑芥暟銆佺被浠涔堢殑錛堟瘮濡傛暟鎹簱榪炴帴鍑芥暟Connect(char*,char*)錛夛紝浣嗗埆浜虹殑鍑芥暟鍙傛暟鐢ㄧ殑鏄痗har*褰㈠紡
鐨勶紝鑰屾垜浠煡閬擄紝c_str()銆乨ata()榪斿洖鐨勫瓧絎︽暟緇勭敱璇ュ瓧絎︿覆鎷ユ湁錛屾墍浠ユ槸涓縐峜onst
char*,瑕佹兂浣滀負涓婇潰鎻愬強鐨勫嚱鏁扮殑鍙傛暟錛岃繕蹇呴』鎷瘋礉鍒頒竴涓猚har*,鑰屾垜浠殑鍘熷垯鏄兘涓嶄嬌鐢–瀛楃涓插氨涓嶄嬌鐢ㄣ傞偅涔堬紝榪欐椂鍊欐垜浠殑澶勭悊鏂瑰紡鏄細濡傛灉
姝ゅ嚱鏁板鍙傛暟(涔熷氨鏄痗har*)鐨勫唴瀹逛笉淇敼鐨勮瘽錛屾垜浠彲浠ヨ繖鏍稢onnect((char*)UserID.c_str(),
(char*)PassWD.c_str()),浣嗘槸榪欐椂鍊欐槸瀛樺湪鍗遍櫓鐨勶紝鍥犱負榪欐牱杞崲鍚庣殑瀛楃涓插叾瀹炴槸鍙互淇敼鐨勶紙鏈夊叴瓚e湴鍙互鑷繁璇曚竴璇曪級錛屾墍浠ユ垜寮?
璋冮櫎闈炲嚱鏁拌皟鐢ㄧ殑鏃跺欎笉瀵瑰弬鏁拌繘琛屼慨鏀癸紝鍚﹀垯蹇呴』鎷瘋礉鍒頒竴涓猚har*涓婂幓銆傚綋鐒訛紝鏇寸ǔ濡ョ殑鍔炴硶鏄棤璁轟粈涔堟儏鍐甸兘鎷瘋礉鍒頒竴涓猚har*涓婂幓銆傚悓鏃舵垜浠篃紲?
紲風幇鍦ㄤ粛鐒朵嬌鐢–瀛楃涓茶繘琛岀紪紼嬬殑楂樻墜浠紙璇翠粬浠槸楂樻墜涓鐐瑰効涔熶笉涓鴻繃錛屼篃璁稿湪鎴戜滑榪樼┛寮瑁嗚¥鐨勬椂鍊欎粬浠氨寮濮嬬紪紼嬩簡錛屽搱鍝?#8230;錛夊啓鐨勫嚱鏁伴兘姣旇緝瑙勮寖錛岄偅鏍?
鎴戜滑灝變笉蹇呰繘琛屽己鍒惰漿鎹簡銆?br>
2錛?鍏冪礌瀛樺彇
鎴戜滑鍙互浣跨敤涓嬫爣鎿嶄綔絎]鍜屽嚱鏁癮t()瀵瑰厓绱犲寘鍚殑瀛楃榪涜璁塊棶銆備絾鏄簲璇ユ敞鎰忕殑鏄搷浣滅[]騫朵笉媯鏌ョ儲寮曟槸鍚︽湁鏁堬紙鏈夋晥绱㈠紩
0~str.length()錛夛紝濡傛灉绱㈠紩澶辨晥錛屼細寮曡搗鏈畾涔夌殑琛屼負銆傝宎t()浼氭鏌ワ紝濡傛灉浣跨敤at()鐨勬椂鍊欑儲寮曟棤鏁堬紝浼氭姏鍑?
out_of_range寮傚父銆?br> 鏈変竴涓緥澶栦笉寰椾笉璇達紝const string a;鐨勬搷浣滅[]瀵圭儲寮曞兼槸a.length()浠嶇劧鏈夋晥錛屽叾榪斿洖鍊兼槸’\0’銆傚叾浠栫殑鍚勭鎯呭喌錛宎.length()绱㈠紩閮芥槸鏃犳晥鐨勩備婦渚嬪涓嬶細
const string Cstr(“const string”);
string Str(“string”);
Str[3]; //ok
Str.at(3); //ok
Str[100]; //鏈畾涔夌殑琛屼負
Str.at(100); //throw out_of_range
Str[Str.length()] //鏈畾涔夎涓?br>Cstr[Cstr.length()] //榪斿洖 ‘\0’
Str.at(Str.length());//throw out_of_range
Cstr.at(Cstr.length()) ////throw out_of_range
鎴戜笉璧炴垚綾諱技浜庝笅闈㈢殑寮曠敤鎴栨寚閽堣祴鍊鹼細
char& r=s[2];
char* p= &s[3];
鍥犱負涓鏃﹀彂鐢熼噸鏂板垎閰嶏紝r,p绔嬪嵆澶辨晥銆傞伩鍏嶇殑鏂規(guī)硶灝辨槸涓嶄嬌鐢ㄣ?br>
2錛?姣旇緝鍑芥暟
C++瀛楃涓叉敮鎸佸父瑙佺殑姣旇緝鎿嶄綔絎︼紙>,>=,<,<=,==,!=錛夛紝鐢氳嚦鏀寔string涓嶤-string鐨勬瘮杈?濡?
str<”hello”)銆傚湪浣跨敤>,>=,<,<=榪欎簺鎿嶄綔絎︾殑鏃跺欐槸鏍規(guī)嵁“褰撳墠瀛楃鐗規(guī)?#8221;灝嗗瓧絎︽寜瀛楀吀欏哄簭榪涜閫愪竴寰?
姣旇緝銆傚瓧鍏告帓搴忛潬鍓嶇殑瀛楃灝忥紝姣旇緝鐨勯『搴忔槸浠庡墠鍚戝悗姣旇緝錛岄亣鍒頒笉鐩哥瓑鐨勫瓧絎﹀氨鎸夎繖涓綅緗笂鐨勪袱涓瓧絎︾殑姣旇緝緇撴灉紜畾涓や釜瀛楃涓茬殑澶у皬銆傚悓
鏃訛紝string(“aaaa”)
鍙︿竴涓姛鑳藉己澶х殑姣旇緝鍑芥暟鏄垚鍛樺嚱鏁癱ompare()銆備粬鏀寔澶氬弬鏁板鐞嗭紝鏀寔鐢ㄧ儲寮曞煎拰闀垮害瀹氫綅瀛愪覆鏉ヨ繘琛屾瘮杈冦備粬榪斿洖涓涓暣鏁版潵琛ㄧず姣旇緝緇撴灉錛岃繑
鍥炲兼剰涔夊涓嬶細0-鐩哥瓑 銆?-澶т簬 <0-灝忎簬銆備婦渚嬪涓嬶細
string s(“abcd”);
s.compare(“abcd”); //榪斿洖0
s.compare(“dcba”); //榪斿洖涓涓皬浜?鐨勫?br> s.compare(“ab”); //榪斿洖澶т簬0鐨勫?br>
s.compare(s); //鐩哥瓑
s.compare(0,2,s,2,2); //鐢?#8221;ab”鍜?#8221;cd”榪涜姣旇緝 灝忎簬闆?br> s.compare(1,2,”bcx”,2); //鐢?#8221;bc”鍜?#8221;bc”姣旇緝銆?br>鎬庝箞鏍鳳紵鍔熻兘澶熷叏鐨勫惂錛佷粈涔堬紵榪樹笉鑳芥弧瓚充綘鐨勮儍鍙o紵濂藉惂錛岄偅絳夌潃錛屽悗闈㈡湁鏇翠釜鎬у寲鐨勬瘮杈冪畻娉曘傚厛緇欎釜鎻愮ず錛屼嬌鐢ㄧ殑鏄疭TL鐨勬瘮杈冪畻娉曘備粈涔堬紵瀵筍TL涓紿嶄笉閫氾紵闈狅紝浣犻噸淇惂錛?br>
2錛? 鏇存敼鍐呭
榪欏湪瀛楃涓茬殑鎿嶄綔涓崰浜嗗緢澶т竴閮ㄥ垎銆?br>棣栧厛璁茶祴鍊鹼紝絎竴涓祴鍊兼柟娉曞綋鐒舵槸浣跨敤鎿嶄綔絎?錛屾柊鍊煎彲浠ユ槸string(濡傦細s=ns) 銆乧_string(濡傦細s=”gaint”)鐢氳嚦鍗曚竴瀛楃錛堝錛歴=’j’錛夈傝繕鍙互浣跨敤鎴愬憳鍑芥暟assign()錛岃繖涓垚鍛樺嚱鏁板彲浠ヤ嬌浣犳洿鐏墊椿鐨勫瀛楃涓茶祴鍊箋傝繕鏄婦渚嬭鏄庡惂錛?br>s.assign(str); //涓嶈
s.assign(str,1,3);//濡傛灉str鏄?#8221;iamangel” 灝辨槸鎶?#8221;ama”璧嬬粰瀛楃涓?br>s.assign(str,2,string::npos);//鎶婂瓧絎︿覆str浠庣儲寮曞?寮濮嬪埌緇撳熬璧嬬粰s
s.assign(“gaint”); //涓嶈
s.assign(“nico”,5);//鎶?#8217;n’ ‘I’ ‘c’ ‘o’ ‘\0’璧嬬粰瀛楃涓?br>s.assign(5,’x’);//鎶婁簲涓獂璧嬬粰瀛楃涓?br>鎶婂瓧絎︿覆娓呯┖鐨勬柟娉曟湁涓変釜錛歴=””;s.clear();s.erase();(鎴戣秺鏉ヨ秺瑙夊緱涓句緥姣旇璇濊鍒漢瀹規(guī)槗鎳傦紒)銆?br>string鎻愪緵浜嗗緢澶氬嚱鏁扮敤浜庢彃鍏ワ紙insert錛夈佸垹闄わ紙erase錛夈佹浛鎹紙replace錛夈佸鍔犲瓧絎︺?br>鍏堣澧炲姞瀛楃錛堣繖閲岃鐨勫鍔犳槸鍦ㄥ熬宸翠笂錛夛紝鍑芥暟鏈?+=銆乤ppend()銆乸ush_back()銆備婦渚嬪涓嬶細
s+=str;//鍔犱釜瀛楃涓?br>s+=”my name is jiayp”;//鍔犱釜C瀛楃涓?br>s+=’a’;//鍔犱釜瀛楃
s.append(str);
s.append(str,1,3);//涓嶈В閲婁簡 鍚屽墠闈㈢殑鍑芥暟鍙傛暟assign鐨勮В閲?br>s.append(str,2,string::npos)//涓嶈В閲婁簡
s.append(“my name is jiayp”);
s.append(“nico”,5);
s.append(5,’x’);