發(fā)布于:2021-01-27 15:31:38
0
151
0
什么是字符串?
字符串是一個(gè)字符序列。C++字符串是STD::string類的對象。字符是允許訪問單個(gè)字符字節(jié)的字節(jié)序列。
C++字符串動態(tài)分配內(nèi)存。如果需要,可以在運(yùn)行時(shí)為字符串分配更多內(nèi)存。因?yàn)闆]有內(nèi)存預(yù)分配,所以沒有內(nèi)存浪費(fèi)。我們可以對字符串執(zhí)行各種操作,包括比較、串聯(lián)、轉(zhuǎn)換等。
聲明字符串
C++支持兩種類型的字符串聲明:
C樣式字符串
字符串類類型
C樣式字符串
這種類型的字符串聲明是在C編程語言中引入的。C++繼續(xù)支持它。它只是一個(gè)以空字符( 0)結(jié)尾的一維字符數(shù)組。以null結(jié)尾的字符串包含組成字符串的字符,然后后跟null。
考慮下面給出的字符串聲明:
char name[5] = {'J', 'o', 'h', 'n', ''};
上面的聲明創(chuàng)建了一個(gè)字符串,形成單詞John。單詞有4個(gè)字符,但字符串的大小為5。額外的空間允許容納空字符。
使用數(shù)組初始化規(guī)則,我們可以編寫如下語句:
char name[] = "John";
請注意,您不必將空字符放在字符串常量的末尾。在初始化數(shù)組時(shí),C++編譯器將自動在字符串的末尾放置“0”。
std :: string
標(biāo)準(zhǔn)C++庫提供支持各種字符串操作的字符串類。它被寫成std :: string。
要使用此類,必須首先使用#include預(yù)處理器將其包含到工作區(qū)中,如下所示:
#include <string>
接下來,我們可以使用string關(guān)鍵字聲明字符串。例如:
string name = "John";
上面的語句將創(chuàng)建一個(gè)名為name的字符串來保存值John。
訪問字符串值
在C++中,我們可以使用字符串名稱訪問字符串值。例如:
#include <iostream>
using namespace std;
int main() {
char name[5] = { 'J', 'o', 'h', 'n', '' };
cout << "String value is: ";
cout << name << endl;
return 0;
}
輸出:
以下是代碼截圖:
代碼說明:
在我們的代碼中包含iostream頭文件。它將允許我們讀取和寫入控制臺。
包括std名稱空間,以便在不調(diào)用它的情況下使用它的類和函數(shù)。
調(diào)用main()函數(shù),其中應(yīng)添加程序邏輯。{標(biāo)記main()函數(shù)主體的開始。
聲明一個(gè)字符串并為其命名。字符串將存儲值John。多余的空間將存儲空字符。
在控制臺上打印一些文本。
在控制臺上打印名為name的字符串的值。
如果程序運(yùn)行正常,main()函數(shù)應(yīng)該返回一個(gè)值。
main()函數(shù)主體的結(jié)尾。
這里是使用C++標(biāo)準(zhǔn)字符串類的另一個(gè)例子:
#include <iostream>
#include <string>
using namespace std;
int main() {
string name = "Guru99";
cout << "The name is : " << name << endl;
return 0;
}
輸出:
以下是代碼截圖:
代碼說明:
在我們的代碼中包含iostream頭文件。它將允許我們讀取和寫入控制臺。
在我們的代碼中包含標(biāo)準(zhǔn)字符串類。
包括std名稱空間,以便在不調(diào)用它的情況下使用它的類和函數(shù)。
調(diào)用main()函數(shù),其中應(yīng)添加程序邏輯。{標(biāo)記main()函數(shù)主體的開始。
聲明一個(gè)字符串并為其命名。字符串將存儲Guru99的值。
將字符串名稱的值與控制臺上的某些文本一起打印。
如果程序運(yùn)行正常,main()函數(shù)應(yīng)該返回一個(gè)值。
main()函數(shù)主體的結(jié)尾。
您經(jīng)常需要操縱字符串。C++提供了一個(gè)廣泛的函數(shù),您可以為此使用。這些函數(shù)是在CString類中定義的,因此,為了使用這些函數(shù),我們必須在代碼中包含它。讓我們討論一下:
這是字符串復(fù)制函數(shù)。它將一個(gè)字符串復(fù)制到另一個(gè)字符串中。
語法:
strcpy(string1, string2);
函數(shù)的兩個(gè)參數(shù)string1和string2是字符串。函數(shù)將把字符串string1復(fù)制到字符串1中。
這是字符串連接函數(shù)。它連接字符串。
語法:
strcat(string1, string2);
函數(shù)的兩個(gè)參數(shù)string1和string2是要連接的字符串。上面的函數(shù)將字符串string2連接到字符串string1的末尾。
這是字符串長度函數(shù)。它返回作為參數(shù)傳遞給它的字符串的長度。
語法:
strnlen(string1)
參數(shù)string1是要確定其長度的字符串的名稱。上面的函數(shù)將返回字符串string1的長度。
這是字符串比較函數(shù)。它用于字符串比較。
語法:
strcmp(string1, string2);
如果字符串string1和string2相似,則上述函數(shù)將返回0;如果string1
以下示例演示如何使用上述字符串函數(shù):
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char name1[10] = "Guru99";
char name2[10] = "John";
char name3[10];
int len;
strcpy(name3, name1);
cout << "strcpy( name3, name1) : " << name3 << endl;
strcat(name1, name2);
cout << "strcat( name1, name2): " << name1 << endl;
len = strlen(name1);
cout << "strlen(name1) : " << len << endl;
return 0;
}
輸出:
以下是代碼截圖:
代碼說明:
在我們的代碼中包含iostream頭文件。它將允許我們讀取和寫入控制臺。
在我們的代碼中包含標(biāo)準(zhǔn)CString類。
包括std名稱空間,以便在不調(diào)用它的情況下使用它的類和函數(shù)。
調(diào)用main()函數(shù),其中應(yīng)添加程序邏輯。{標(biāo)記main()函數(shù)主體的開始。
聲明一個(gè)由10個(gè)字符組成的字符串,并將其命名為name1。字符串將存儲Guru99的值。
聲明一個(gè)由10個(gè)字符組成的字符串,并將其命名為name2。字符串將存儲值John。
聲明一個(gè)由10個(gè)字符組成的字符串,并將其命名為name3。
聲明一個(gè)名為len的整數(shù)變量。
將字符串名稱1復(fù)制到字符串名稱3中。
在控制臺上打印字符串name1的值和一些文本。它應(yīng)該打印Guru99。
將字符串name2連接到字符串name1的末尾。name1的值現(xiàn)在是Guru99John。
在控制臺上打印字符串name1的值和一些文本。它應(yīng)該打印Guru99John
來確定名為name1的字符串的長度,并將長度值賦給變量len。
在控制臺上打印len變量的值和一些其他文本。
如果程序運(yùn)行正常,main()函數(shù)應(yīng)該返回一個(gè)值。
main()函數(shù)主體的結(jié)尾。
字符串是一個(gè)字符序列。
字符串屬于C++中的標(biāo)準(zhǔn)字符串類。
我們可以使用C樣式字符串或標(biāo)準(zhǔn)字符串類聲明字符串。
strcpy()函數(shù)將一個(gè)字符串復(fù)制到另一個(gè)字符串中。
strcat()函數(shù)連接兩個(gè)函數(shù)。
strlen()函數(shù)返回函數(shù)的長度。
strcmp()函數(shù)比較兩個(gè)字符串。
作者介紹