C++ 增強了對字符串的支持,除了可以使用c中的字符串,還可以使用內置的數據類型string,string類處理字符串會翻遍很多,完全可以代替C語言中的char 數組和char 指針。
使用sting類需要包含頭文件< sting >, 下面我們就來介紹怎麼使用。
string 的幾種用法:
#include#include using namespace std; void main(){ string s1; string s2 = "c plus plus"; string s3 = s2; string s4(5, 's'); cout << s1 << s2 << s3 << s4 << endl; system("pause"); }
輸出結果:
c plus plusc plus plussssss 請按任意鍵繼續. . .
上面的幾行代碼介紹了 幾種定義string 類型變量的方法,變量s1只是定義但是沒有初始化,編譯器會將默認的值附給s1,默認值是”“(空字符串)。
變量s2再定義的同時被初始化為”c plus plus ”與C語言中的char 字符串不同,string類型的變量結尾沒有
‘\0’,string 類型的本質是一個個string類,而我們定義的變量則是一個個的string類的對象,變量s3在定義的時候直接用s2進行初始化,因此s3的內容也是‘c plus plus’。變量s4被初始化為由5個’s’字符串組成的字符串,也就是’sssss‘。
與C語言中的字符串不同,當我們需要知道字符串長度時,可以調用string類提供的length()函數。如下所示:
string s = "c plus plus"; int len = s.length(); cout<
編譯運行的結果:
11
這裡,變量 s 也是 string 類的對象,length() 是它的成員函數。由於 string 變量的末尾沒有 ‘\0’ 字符,所以 length() 返回的是字符串的真實長度,而不是長度 +1。
C++雖然提供了string類來替代C語言中的char 數組形式的字符串,但是有時候編程中必須要使用C風格的字符串,為此,string類提供了一個轉換的函數c_str();函數能夠將 string 變量轉換為一個 const 字符串數組的形式,並將指向該數組的指針返回。請看下面的代碼:
string filename = "input.txt"; ifstream in; in.open(filename.c_str());
為了使用文件打開函數 open(),必須將 string 類型的變量轉換為字符串數組。
#ifndef _ITERATOR_DEBUG_LEVEL #define _ITERATOR_DEBUG_LEVEL 0 #else #undef _ITERATOR_DEBUG_LEVEL #define _ITERATOR_DEBUG_LEVEL 0 #endif #include#include //string字符串->c字符串轉換 void main() { //string -> char* string s1 = "far away"; const char* c = s1.c_str(); printf("%s\n",c); // string s2 = c; //string->char[] //從string中賦值字符到char[] char arr[50] = {0}; s1.copy(arr,4,0); cout << arr << endl; system("pause"); }
編譯輸出結果:
far away far 請按任意鍵繼續. . .
string類重載了輸入輸出的運算符,用“>>”進行輸入,用”<<”進行輸出,請看下面代碼:
#include#include using namespace std; int main(){ string s; cin >> s; //輸入字符串 cout << s << endl; //輸出字符串 system("pause"); return 0; }
運行結果:
c plus c 請按任意鍵繼續. . .
雖然我們輸入了兩個由空格隔開的”c plus’,但是只輸出了一個,這是因為輸入的運算符“>>”默認會忽略空格,遇到空格就認為輸入結束,所以最後輸入的plus沒有被存儲到變量裡面。