前言
我們之前學習C語言的時候知道沒有單獨的字符串類型,只有字符型,對於操作字符串來說只能用字符型數組來完成,對字符的相關操作也是比較麻煩,但是我們在學習c++後對於字符串的操作是極其方便和簡單的。
我們今天要學習的string類是c++的拓展庫,使得我們對字符串的操作變得簡單,嚴格來說是屬於字符串對象,這個類庫裡面有很多對字符串操作的方法,接下來我們一起來學習一些比較常用的字符串操作。

字符串的定義
我們來看一下我們的字符串定義:
string str1;
string str2=”hello word”;
string str3(“hello word”);
我們要知道的是我們string類是可以自動處理我們字符串大小的,就比如你str的聲明創建了一個長度為0的字符串對象,但是如果你對str1進行輸入賦值的時候,它的長度會自動發生改變,這使得它比我們的數組更加的方便和安全,不會存在越界問題。
字符串輸入和輸出
我們在c++中使用的輸入和輸出使用的是cout和cin在定義好數組後就可以對字符串進行輸入和輸出,例如下面的代碼:
string str;//定義一個字符串str
cin>>str; //使用cin對字符串進行賦值
cout<<str<<endl;//使用cout輸出字符串

字符串賦值、拼接和附加
我們可以通過字符串的這幾個操作看出來string對處理字符串的強大之處了。在學習C語言的時候我們知道要把字符串str1賦值給str2 我們需要使用複製函數strcpy,但是我們的c++中可以直接使用等號;
strcpy(str2,str1)//C語言中把str1的值賦值給str2
str2 = str1 //c++中str1的值賦值給字符串str2;
我們再來看一下字符串的拼接把str1和str2進行拼接:
strcat(str1,str2);//C語言中字符串的拼接使用strcat
str2=str1+str2//c++中我們使用“+”號對字符串進行拼接。
字符串的其他操作
除了以上的操作string其他常用的方法之外string還有很多好玩的操作我們一起來看一遍:
1、創建一個包含n個元素,每個元素初始化為指定元素例如:string str1(3,A);輸出結果會是“AAA”。
2、把str1賦值給str2 :string str2(str1)或者str2=str1;
3、獲取字符串的長度和大小使用:str.size()和str.length();
4、字符串追加把str2追加到str1後面:str1+=str2、str1.append(str2)。
5、比較字符串是否相等:str1==str2 或者str1 !=str2;
6、獲取str1中的子字符串:str1.substr(n,m),從str1的第n個字符開始取m個字符。
7、獲取字符串中某個字符:str[n]、或者str.at(n)獲取str字符串中第n個字符。
除了這些簡單的操作其實string的可以實現的方法還有很多,比如說查找,刪除,插入等方法,感興趣的小夥伴可以自己去試一試。

代碼測試
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str1(3,'A');
cout<<str1<<endl;
string str2="hello word";
int a=str2.size();
int b=str2.length();
cout<<"str2 長度:"<<a<<" "<<b<<endl;
string str3="hello";
string str4=" word";
str3+=str4;
cout<<"拼接:"<<str3<<" "<<endl;
str3.append(str4);
cout<<"拼接:"<<str3<<" "<<endl;
string str5="hello";
string str6="hello";
string str7="word";
if(str6 == str5)
{ cout<<"相等"<<endl;}
if(str7 != str5)
{ cout<<"不相等"<<endl;}
string str8="ABCDEFG";
string str9=str8.substr(2,3);
cout<<"str9:"<<str9<<endl;
cout<<"str8[2]:"<<str8[2]<<endl;
return 0;
}
string和C語言中字符函數對比
在剛剛講述字符串拼接和賦值的時候單獨拿出來講了一下,主要是為了現在和大家再多說一下他們之間的區別,我們C語言雖然說也可以實現對字符串的相關操作,但是相對麻煩,但是除了麻煩我們應該還要知道另外一個重要的是方面:
我們函數strcat()在賦值的時候會存在目標內存不足,無法存儲的危險,也許會覆蓋相鄰的內存。可能會導致程序終止運行。但是我們的string會自動調整大小能夠很好避免這個錯誤的發生。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/225982.html
微信掃一掃
支付寶掃一掃