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