<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>
"); //-->

博客專(zhuān)欄

EEPW首頁(yè) > 博客 > c++ string.c_str()小結

c++ string.c_str()小結

發(fā)布人:電子禪石 時(shí)間:2024-08-08 來(lái)源:工程師 發(fā)布文章

c++

const char *c_str();
c_str()函數返回一個(gè)指向正規C字符串的指針常量, 內容與本string串相同.(其實(shí)它指向的是string對象內部真正的char緩沖區),所以返回const,以防止用戶(hù)的修改。
這是為了與c語(yǔ)言兼容,在c語(yǔ)言中沒(méi)有string類(lèi)型,故必須通過(guò)string類(lèi)對象的成員函數c_str()把string 對象轉換成c中的字符串樣式。


如:strcpy()等函數.因為,string對象可能在使用后被析構函數釋放掉,那么你所指向的內容就具有不確定性.

{

string var = "Olympic";

char *ptr = var.c_str();

}//還不能被編譯,因為va.c_str()返回臨時(shí)指針,賦值給ptr之后,在}結束之后,var對象就得析構,最后要使用ptr,就是垃圾內容

 

一,C語(yǔ)言的字符串

在C語(yǔ)言里,對字符串的處理一項都是一件比較痛苦的事情,因為通常在實(shí)現字符串的操作的時(shí)候都會(huì )用到最不容易駕馭的類(lèi)型——指針。

比如下面這個(gè)例子:

//example 1:

char str[12] = "Hello";

char *p = str;

*p = 'h';  //改變第一個(gè)字母

 

//example 2:

char *ptr = "Hello";

*ptr = 'h';  //錯誤

 

第一個(gè)字符串時(shí)用數組開(kāi)辟的,它是可以改變的變量。而第二個(gè)字符串則是一個(gè)常量,也就是字面值。ptr只是指向它的指針而已,而不能改變指向的內容。

要想通過(guò)指針來(lái)改變常量是錯誤,正確的寫(xiě)法應該是用const指針。

const char *ptr = "Hello";

二,初識string類(lèi)

正是因為C風(fēng)格字符串(以空字符結尾的字符數組)太過(guò)復雜難于掌握,不適合大程序的開(kāi)發(fā),所以C++標準庫定義了一種string類(lèi),定義在頭文件<string>。注意<string.h>和<cstring>都是錯誤的,這兩個(gè)頭文件主要定義C風(fēng)格字符串操作的一些方法,譬如strlen(), strcpy()等。第一個(gè)是C的頭文件格式,而第二個(gè)是C++風(fēng)格的頭文件,但是和<string.h>是一樣的,它的目的是為了和C兼容。

看下面例子:

//example 3:

string str("world");   //可以用C風(fēng)格字符串初始化

string words = "Hello";

string greet = words;

string  join = greet + words;  //可以像基本類(lèi)型一樣操作


*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。



關(guān)鍵詞: string

相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>