溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么使用C++中的string類(lèi)型

發(fā)布時(shí)間:2021-11-03 13:34:40 來(lái)源:億速云 閱讀:188 作者:iii 欄目:開(kāi)發(fā)技術(shù)

這篇文章主要講解了“怎么使用C++中的string類(lèi)型”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“怎么使用C++中的string類(lèi)型”吧!

1、string 類(lèi)

1.1 和char *的異同

C++當(dāng)中,除了char *類(lèi)型,還有專(zhuān)門(mén)的字符串類(lèi)型,就叫做string。

通過(guò)包含頭文件string就可以使用:

include<string>

在很多方面,string類(lèi)型的使用方法和char *一樣,例如:

string str1;
string str2 = "hello world"; // 初始化和char *一致

cout << str2 << endl; // cout和char *一致
cout << str[2] << endl; // 元素訪問(wèn)和char *一致

除此之外,它還有一個(gè)更大的好處,就是當(dāng)我們從外界讀入字符串的時(shí)候,再也不用操心讀入的字符串超界的問(wèn)題了。因?yàn)?code>string類(lèi)設(shè)計(jì)可以讓程序自動(dòng)處理字符串的大小。

string str1;
cin >> str1;

1.2 C++11初始化

我們也可以使用C++11的列表初始化特性在string上,不過(guò)其實(shí)沒(méi)必要,直接使用等于號(hào)賦值更方便一些:

string str1 = {"hello world"};
string str2 {"test"};

1.3 拼接

在使用char *的時(shí)候,如果我們要拼接兩個(gè)字符串,需要調(diào)用函數(shù)strcat來(lái)實(shí)現(xiàn)。而有了string,我們可以直接使用加號(hào)來(lái)拼接兩個(gè)字符串:

string str1 = "hello";
string str2 = "world";

string str3 = str1 + str2;

不僅如此,還可以使用+=,表示把另外一個(gè)字符串添加在自己末尾:

str1 += str2; // 等價(jià)于str1 = str1 + str2

1.4 長(zhǎng)度

對(duì)于char *的字符串,我們要求長(zhǎng)度,需要使用strlen函數(shù)。而string類(lèi)型的字符串,我們可以直接調(diào)用.size()函數(shù):

string str = "hello";

cout << str.size() << endl; // output 5

1.5 IO

前文說(shuō)了,string類(lèi)的cincout用法都和char *完全一致,不過(guò)在讀取一行的時(shí)候有些區(qū)別。

char st[100];
cin.getline(st, 100);

string str;
getline(cin, str);

對(duì)于char *來(lái)說(shuō),我們調(diào)用的cin.getline表示的是cin中的一個(gè)方法。而后者,我們調(diào)用的getline傳入了cin,這里的cin是一個(gè)傳入的參數(shù),并且也沒(méi)有指定長(zhǎng)度,因?yàn)?code>string會(huì)自動(dòng)設(shè)定長(zhǎng)度。

1.6 原始字符串

關(guān)于string類(lèi)型,C++11有一個(gè)原始字符串的新特性。

在字符串表示當(dāng)中,當(dāng)我們要添加一些特殊字符的時(shí)候,往往需要在前面加上反斜杠,表示取義。

當(dāng)這類(lèi)字符多了之后,就會(huì)很麻煩:

cout << "i want to output \"hello world\"" << endl;

如果我們要換行,還要在其中加入\n。針對(duì)這個(gè)問(wèn)題C++11提出了原始字符串,也就是說(shuō)在原始字符串當(dāng)中所有的符號(hào)都會(huì)被原本原樣地輸出,不需要再使用\來(lái)取義了。

原始字符串以"R(開(kāi)頭)"結(jié)尾,`比如剛才的內(nèi)容就可以寫(xiě)成:

cout << R"(i want to output "hello world")" << endl;

不僅如此,我們還可以隨意換行:

cout << R"(i want to output 
"hello world")" << endl;

但是有一個(gè)小問(wèn)題,假如我們想要輸出的結(jié)果當(dāng)中也包含"(該怎么辦呢?也有辦法,編譯器允許我們?cè)?quot;和(之間加入任意的字符來(lái)做區(qū)分(空格、左括號(hào)、右括號(hào)、斜杠、控制字符除外),這樣我們?cè)诮Y(jié)尾的時(shí)候,也需要加上同樣的字符。例如:

cout << R"tst("(test)")tst" << endl;

運(yùn)行之后,屏幕上會(huì)輸出"(test)"的結(jié)果。

感謝各位的閱讀,以上就是“怎么使用C++中的string類(lèi)型”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)怎么使用C++中的string類(lèi)型這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI