座機前加區號:如0105992xxxx
輸入您的電話號碼,點擊通話,稍后您將接到我們的電話,該通話對您完全免費,請放心接聽!

我們在前面簡單介紹了string類型的使用,現在我們再詳細介紹一下string的知識點。
String是定義在STL中的,可以用來替代C風格字符串,使用更加方便,更加安全。它使用std命名空間。
1.定義、初始化string對象;
2.在string對象上的操作;
3.讀寫string對象。
String是一個類,這個類支持對字符串常用的一些操作,同時也能自動的管理內存分配。你可以把string類型當成一個基本類型,這樣就可以更好的發揮string類型的作用。
1.使用+運算符來連接兩個字符串,使用==運算符來比較兩個字符串,而無需使用C提供的一些關于字符串的庫函數。
2.我們在使用c風格的字符串需要考慮緩沖區的邊界,以免造成緩沖區溢出的情況。而string不需要考慮這個問題。
1.包含頭文件string,使用命名空間;
2.聲明和定義string。
1)聲明一個string類型的變量str1;
2)聲明并定義一個string類型的變量str2;
3)聲明并定義一個string類型的變量str3;
4)聲明并定義一個string類型的變量str4;
5)聲明并定義一個string類型的變量str5,它的值為十個a;
6)利用變量str5創建str6,兩個變量是一樣的內容。
3.字符串的加法
字符串的加法操作將字符串連接,加號后面的字符串會拼接到前面的字符串后面。前面兩種都至少有一個string變量,加法連接無法連接兩個string類型的常量。所以加法操作的正確做法就是保證兩個操作數中至少有一個string變量。
4.字符串的比較
這些表達式會返回一個bool類型的值。
5.字符串的一些常用方法
Size() //返回字符串的長度 Str[n]; //下標訪問數據,0~n~size-1 empty() // 判斷字符串是否為空
6.字符串的實例
文本編輯器:創建一個程序,將我們輸入的每一行的數據拼接到一個字符串后面。
測試代碼如下:
#include <iostream> //輸入輸出流的包含 #include<string> //string類的包含 using namespace std; //命名空間的使用 int main() { String str; //接收我們輸入的所有字符串 String str1; //保存每一行的字符串,用來拼接到str后面 int nLine=0; //統計我們輸入的行數 while(getline(cin,str1)) { //getline(cin,str1)是一個有兩個參數的每一獲取一行字符串的函數,cin代表它是從輸入流中讀取數據,str1是將讀取的一行數據保存到str1中 if(str1==”q”) { //如果我們輸入q,就停止輸入 break; //跳出循環 } str+=str1; str+=”\n”; //字符串的拼接,由于str1中是不會將換行符讀取進去的,所以為了輸出的時候保持我們輸入時候的每一行格式,我們手動在輸入的每一行字符后面添加一個換行符保存在每一行后面,換行符也是一個字符,這樣輸出的時候會自動換行 nLine ++; //統計行數 } cout<<”total chars:”<<str.size()<<”total lines:”<<nLine<<endl; //輸出字符總數及行數 cout <<str<<endl; return 0; }
運行結果如下:不知道大家注意到一個細節沒有,我們輸入了23個字符,size函數統計結果顯示為26個,還有三個字符就是我們行末尾的換行符。我們前面就提到過,C風格的字符串的結尾中總是有一個結尾標志\0,如果我們對c風格的字符串使用cout輸出,可以預想它遇到\0是會認為這個字符串已經結束了,但是這里對string類型的字符串就沒有結束標志,只會按照字符串的大小來輸出。
string是一個類,它的內部也是使用c風格的字符串來實現的,可以用一個方法來獲得它的C風格的字符串的常量指針。String類型的字符串的長度是可以自動增加的,當我們在對字符串進行拼接時,如果它原來的的空間不夠,會自動銷毀這一片空間,然后重新分配一段更大的空間。String類的內部是可以自動管理內存的釋放和分配的。如果一旦內存進行了重新分配和釋放,那么你原來獲得的常量指針指向的地址就是無效的了,這個時候你對p的操作就是有風險的,所以說我們盡量不要去使用它。
const char *p=str.c_str(); //返回的是常量字符指針,所以只能讀不能寫
Copyright? 2019 巨立鑫 All Rights Reserved ?皖ICP備17011067號-4 網址:http://www.appleforos.com 技術支持:巨立鑫軟件技術部