C 語言string類介紹和示例

2021-09-25 21:08:55 字數 2011 閱讀 7366

在c語言中,用0結尾的字元陣列表示字串,c的字串有乙個問題,就是定義後大小不能改變,存入的內容只能比陣列小,不能大,如果不小心存多了,會引起記憶體的溢位,這個問題讓程式設計師很鬱悶。

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

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

#include

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

string類是乙個模板類,位於std命名空間內,為方便使用還需要在程式中增加:

using namespace std;

建立乙個string字串物件很簡單:

string str;

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

std::string str;

示例(book215.cpp)

也可以這麼寫:

可以用=直接賦值。

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

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

可以用獲取特定的字元,類似陣列。

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的一些特性:

int size();             // 返回當前字串的大小

int length();           // 返回當前字串的長度

void clear();           // 清空字串

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

string

是乙個類,通過動態分配記憶體,實現對字串的儲存,我們來看以下**。

示例(book216.cpp)

執行結果

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

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

對初學者來說,只會用c和c++寫一些簡單的程式,做一些簡單的事情,不懂得實際開發的需求,例如oracle和mysql資料庫提供的介面,在資料交換的時候需要繫結乙個固定的位址,string是做不到的。

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

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

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

C 語言類的詳解和示例

超女選秀的例子我們玩了很久,為了教學的需要,暫時離開美眉們,我將採用實際專案開發的例子。在c語言基礎知識中已學習過檔案操作,在實際開發中,我會把檔案操作封裝成乙個類,類的宣告如下 類的宣告和成員函式的定義都是類定義的一部分,在實際開發中,我們通常將類的宣告放在標頭檔案中,而將成員函式的定義放在原始檔...

C 中標準類string常用示例

好久沒用過c 了,把常用的資料型別重新熟悉下。string平時用的較少,簡單總結下。include include using std string using std cout using std endl int main 取字串中某個元素 cout str1.at 3 endl for int...

C語言isalpha函式介紹 示例和實現

isalpha函式用於判斷字元是否為字母 a z和a z 在本文中,我們先來介紹isalpha函式的使用方法,然後編寫乙個自定義的 isalpha函式,實現與isalpha函式相同的功能。include int isalpha int c 判斷引數c是否為字母,您可能會問 isalpha函式的引數是...