在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<abbr id="27omo"></abbr>

<menu id="27omo"><dl id="27omo"></dl></menu>
    • <label id="27omo"><tt id="27omo"></tt></label>

      博客專欄

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

      c++ string.c_str()小結(jié)

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

      c++

      const char *c_str();
      c_str()函數(shù)返回一個(gè)指向正規(guī)C字符串的指針常量, 內(nèi)容與本string串相同.(其實(shí)它指向的是string對(duì)象內(nèi)部真正的char緩沖區(qū)),所以返回const,以防止用戶的修改。
      這是為了與c語(yǔ)言兼容,在c語(yǔ)言中沒(méi)有string類(lèi)型,故必須通過(guò)string類(lèi)對(duì)象的成員函數(shù)c_str()把string 對(duì)象轉(zhuǎn)換成c中的字符串樣式。
      
      
      如:strcpy()等函數(shù).因?yàn)?string對(duì)象可能在使用后被析構(gòu)函數(shù)釋放掉,那么你所指向的內(nèi)容就具有不確定性.

      {

      string var = "Olympic";

      char *ptr = var.c_str();

      }//還不能被編譯,因?yàn)関a.c_str()返回臨時(shí)指針,賦值給ptr之后,在}結(jié)束之后,var對(duì)象就得析構(gòu),最后要使用ptr,就是垃圾內(nèi)容

       

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

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

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

      //example 1:

      char str[12] = "Hello";

      char *p = str;

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

       

      //example 2:

      char *ptr = "Hello";

      *ptr = 'h';  //錯(cuò)誤

       

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

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

      const char *ptr = "Hello";

      二,初識(shí)string類(lèi)

      正是因?yàn)镃風(fēng)格字符串(以空字符結(jié)尾的字符數(shù)組)太過(guò)復(fù)雜難于掌握,不適合大程序的開(kāi)發(fā),所以C++標(biāo)準(zhǔn)庫(kù)定義了一種string類(lèi),定義在頭文件<string>。注意<string.h>和<cstring>都是錯(cuò)誤的,這兩個(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)型一樣操作


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



      關(guān)鍵詞: string

      相關(guān)推薦

      技術(shù)專區(qū)

      關(guān)閉