c++語言提供了專門處理長度可變的字串的標準庫string型別,標準庫負責管理與儲存字元相關的記憶體並提供字串相關操作,標頭檔案為"string"。
(1)string型別的定義和初始化
string標準庫支援以下幾個建構函式:
建構函式
功能string s
預設建構函式,s初始化為空串
string s2(s1)
將s2初始化為s1的乙個副本
string s3("value")
用乙個字串字面值副本初始化s3
string s4(n, 'c')
將s4初始化為字元'c'的n個副本
string s5(cp,n)
將s5初始化為cp所指向陣列的前n個元素的副本
string s6(s1,pos)
用s1中從下標pos開始的字元的副本對s6初始化,如果pos>s1.size(),該操作未定義
string s7(s1,pos,len)
用s1從下標pos開始的len個字元的副本初始化s7,無論len為多少,最多只能複製s1.size()-pos個字元
注意:字串字面值與標準庫型別string型別並不是同一種型別,程式設計時應加以區分。
(2)string物件的讀寫
c++中可以使用標準輸入輸出操作符來讀寫string物件。使用標準輸入讀入string時,會忽略開頭所有的空白符(如空格、換行符、製表符),讀取直到再次遇到空白符時終止。
如下面的程式,輸入的字串為"hello world!",s中儲存的字串為"hello",輸出的結果也為"hello"。
1string
s;2 cin>>s;
3 cout《如果修改為如下,那麼輸出為"helloworld!"。
string
s1,s2;
cin>>s1>>s2;
cout
《使用getline讀取字串時,直到遇到換行符截止,同時不保留結尾處的換行符。
(3)字串相關操作
a. size()函式 string標準庫的size()函式返回字串的長度,但是返回的型別不是整型,而是string::size_type,這同vector標準庫中的操作。這是因為string類型別和其他許多庫型別都定義了一些配套型別,通過這些配套型別,庫型別的使用就能與機器無關。size_type就是這些配套型別中的一種,它定義為與unsigned(unsigned int或unsigned long)具有相同的含義,而且可以保證足夠大能夠儲存任意string物件的長度。在使用size_type時,需要加上域操作符來說明所使用的size_type型別是由string類定義的。
b. 和字串字面值連線 string物件可以通過加號直接連線,但是字串字面值不是string類物件,當需要將string物件和字串字面值連線時,返回的是乙個string物件,但是不能直接將兩個字串字面值直接通過相加連線,因為它們是c風格字串。
c. 下標操作可用作左值 string物件的下標操作返回值是左值,可以對相應的字元進行修改,如:
string s("
hello");
s[1] = '
-';
d. 字串中字元的處理 有的時候需要處理乙個string物件中具體的某個位置的字元,此時可以通過包含標頭檔案cctype呼叫相關的函式進行處理;cctype其實就是利用了c標準庫函式,這些庫函式定義在c標準庫的ctype.h標頭檔案中。
c++標準庫中具體的處理字串的一些操作可以在文章中找到。
C風格字串和C 標準庫
cstring是string.h標頭檔案的c 版本 c風格字串 strlen s 不包括null,返回s的長度 strcmp s1,s2 s1 s2,返回0 s1 s2,返回正數 s1strcat s1,s2 s2連線到s1後,返回s1 strcpy s1,s2 s2複製給s1,返回s1 strnc...
標準c字元和字串
atof 將字串轉換成浮點數 atoi 將字串轉換成整數 atol 將字串轉換成長整型數 isalnum 當字母或數字字元時,返回真值 isalpha 當字母字元時,返回真值 iscntrl 當控制字元時,返回真值 isdigit 當數字字元時,返回真值 isgraph 當非空格可列印字元時,返回真...
標準c字元和字串
atof 將字串轉換成浮點數 atoi 將字串轉換成整數 atol 將字串轉換成長整型數 isalnum 當字母或數字字元時,返回真值 isalpha 當字母字元時,返回真值 iscntrl 當控制字元時,返回真值 isdigit 當數字字元時,返回真值 isgraph 當非空格可列印字元時,返回真...