天天看點

C++語言string類介紹和示例string的聲明string的重載的操作符最重要的一個成員函數string特性描述函數string的其它成員函數string的本質應用經驗版權聲明 

       在C語言中,用0結尾的字元數組表示字元串,C的字元串有一個問題,就是定義後大小不能改變,存入的内容隻能比數組小,不能大,如果不小心存多了,會引起記憶體的溢出,這個問題讓程式員很郁悶。

       C++的string部分的解決了這個問題,它會随存放字元的長度自動伸縮,程式員不必擔心記憶體溢出的問題。string類還和c語言的字元串之間可以轉換。

string的聲明

       首先,為了在程式中使用string類,必須包含頭檔案 <string>。如下:

       #include <string>

       注意這裡不是string.h,string.h是C字元串頭檔案。

       string類是一個模闆類,位于std命名空間内,為友善使用還需要在程式中增加:

       using namespace std;

       建立一個string字元串對象很簡單:

       string str;

       如果不指定命名空間,也就是說沒有using namespace std,建立字元串對象的方法如下:

       std::string str;

       示例(book215.cpp)

C++語言string類介紹和示例string的聲明string的重載的操作符最重要的一個成員函數string特性描述函數string的其它成員函數string的本質應用經驗版權聲明 

       也可以這麼寫:

C++語言string類介紹和示例string的聲明string的重載的操作符最重要的一個成員函數string特性描述函數string的其它成員函數string的本質應用經驗版權聲明 
C++語言string類介紹和示例string的聲明string的重載的操作符最重要的一個成員函數string特性描述函數string的其它成員函數string的本質應用經驗版權聲明 

string的重載的操作符

       可以用=直接指派。

       可以用 ==、>、<、>=、<=、和!=比較字元串。

       可以用+或者+=操作符連接配接兩個字元串。

       可以用[]擷取特定的字元,類似數組。

最重要的一個成員函數

       const char *c_str(); 

       傳回一個以NULL結尾的c字元串,即c_str()函數傳回一個指向正規C字元串的指針, 内容與本string串相同,用于string轉const char*。

       std::string str1;

       str1="hello world";

       char str2[31];

       strcpy(str2,str1.c_str());

string特性描述函數

       可用下列函數來獲得string的一些特性:

       int size();             // 傳回目前字元串的大小

       int length();           // 傳回目前字元串的長度

       void clear();           // 清空字元串

string的其它成員函數

       string提供了上百個成員函數,非常豐富,豐富得有點眼花,各位自己找資料,有空的時候再研究一下,斷章取義的使用,注意,是有空的時候。

string的本質

      string是一個類,通過動态配置設定記憶體,實作對字元串的存儲,我們來看以下代碼。

       示例(book216.cpp)

C++語言string類介紹和示例string的聲明string的重載的操作符最重要的一個成員函數string特性描述函數string的其它成員函數string的本質應用經驗版權聲明 

       運作結果

C++語言string類介紹和示例string的聲明string的重載的操作符最重要的一個成員函數string特性描述函數string的其它成員函數string的本質應用經驗版權聲明 

      通過以上的例子,我們可以看到,string對象用于存放字元的記憶體位址是變化的,不是什麼神奇的技術。

應用經驗

      C++的string類是一個變長的字元串,不需要程式員擔心記憶體溢出的問題,還提供了很多字元串操作函數,初學者可能會想,用它取代C語言中的字元串(以0結尾的字元數組)一定是個很好的主意。我要告訴各位,這是不可能的,因為string中的字元串存儲的記憶體空間沒有固定的位置(它也沒辦法有固定位置)。

      對初學者來說,隻會用C和C++寫一些簡單的程式,做一些簡單的事情,不懂得實際開發的需求,例如Oracle和MySQL資料庫提供的接口,在資料交換的時候需要綁定一個固定的位址,string是做不到的。

      我的建議是采用string存放一些需要動态配置設定記憶體的臨時資料,避開動态記憶體技術帶來的坑,然後轉換為C的字元串。C的字元串沒有string類那麼豐富的成員函數,這個不是問題,我們可以自己寫,這也是我不想介紹string成員函數的原因,與其花時間去研究string的成員函數,還不如自己寫一個。

      是以,了解string類的原理和一些用得着的成員函數就可以了,不必太深入研究,意義不大。

版權聲明

C語言技術網原創文章,轉載請說明文章的來源、作者和原文的連結。

來源:C語言技術網(www.freecplus.net)

作者:碼農有道

如果這篇文章對您有幫助,請點贊支援,或在您的部落格中轉發我的文章,謝謝!!!

如果文章有錯别字,或者内容有誤,或其他的建議或意見,請您留言指正,非常感謝!!!

繼續閱讀