|
標(biāo)準(zhǔn)庫(kù)的string類(lèi)提供了3個(gè)成員函數(shù)來(lái)從一個(gè)string得到c類(lèi)型的字符數(shù)組:c_str()、data()、copy(p,n)。 1. c_str():生成一個(gè)const char*指針,指向以空字符終止的數(shù)組。 注: ①這個(gè)數(shù)組的數(shù)據(jù)是臨時(shí)的,當(dāng)有一個(gè)改變這些數(shù)據(jù)的成員函數(shù)被調(diào)用后,其中的數(shù)據(jù)就會(huì)失效。因此要么現(xiàn)用先轉(zhuǎn)換,要么把它的數(shù)據(jù)復(fù)制到用戶自己可以管理的內(nèi)存中。注意。看下例:
上面如果繼續(xù)用c指針的話,導(dǎo)致的錯(cuò)誤將是不可想象的。就如:1234變?yōu)閍bcd 其實(shí)上面的c = s.c_str(); 不是一個(gè)好習(xí)慣。既然c指針指向的內(nèi)容容易失效,我們就應(yīng)該按照上面的方法,那怎么把數(shù)據(jù)復(fù)制出來(lái)呢?這就要用到strcpy等函數(shù)(推薦)。
注意:不能再像上面一樣①所示了,const還怎么向里面寫(xiě)入值??;也不能②所示,使用了未初始化的局部變量“c”,運(yùn)行會(huì)出錯(cuò)的 。 ② c_str()返回一個(gè)客戶程序可讀不可改的指向字符數(shù)組的指針,不需要手動(dòng)釋放或刪除這個(gè)指針。 2. data():與c_str()類(lèi)似,但是返回的數(shù)組不以空字符終止。 3. copy(p,n,size_type _Off = 0):從string類(lèi)型對(duì)象中至多復(fù)制n個(gè)字符到字符指針p指向的空間中。默認(rèn)從首字符開(kāi)始,但是也可以指定,開(kāi)始的位置(記住從0開(kāi)始)。返回真正從對(duì)象中復(fù)制的字符。------用戶要確保p指向的空間足夠保存n個(gè)字符。
|
|
|
來(lái)自: 3D建模仿真 > 《學(xué)習(xí)筆記》