博客專欄

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

        c++ string.c_str()小結

        發布人:電子禪石 時間:2024-08-08 來源:工程師 發布文章

        c++

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

        {

        string var = "Olympic";

        char *ptr = var.c_str();

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

         

        一,C語言的字符串

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

        比如下面這個例子:

        //example 1:

        char str[12] = "Hello";

        char *p = str;

        *p = 'h';  //改變第一個字母

         

        //example 2:

        char *ptr = "Hello";

        *ptr = 'h';  //錯誤

         

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

        要想通過指針來改變常量是錯誤,正確的寫法應該是用const指針。

        const char *ptr = "Hello";

        二,初識string類

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

        看下面例子:

        //example 3:

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

        string words = "Hello";

        string greet = words;

        string  join = greet + words;  //可以像基本類型一樣操作


        *博客內容為網友個人發布,僅代表博主個人觀點,如有侵權請聯系工作人員刪除。



        關鍵詞: string

        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 邹城市| 新野县| 双流县| 临澧县| 宁波市| 邯郸市| 禄丰县| 保康县| 牟定县| 曲周县| 桐城市| 广昌县| 许昌市| 肥东县| 惠水县| 翼城县| 嘉定区| 金坛市| 元朗区| 特克斯县| 治多县| 朔州市| 阿克陶县| 二手房| 昌图县| 江城| 汉寿县| 万安县| 玉门市| 北流市| 顺平县| 石狮市| 礼泉县| 张家港市| 武鸣县| 阿拉尔市| 土默特右旗| 渑池县| 桦南县| 漳州市| 卢湾区|