国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【C++入門到精通】C++入門 —— string類(STL)

這篇具有很好參考價值的文章主要介紹了【C++入門到精通】C++入門 —— string類(STL)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

【C++入門到精通】C++入門 —— string類(STL),C++,c++,開發(fā)語言

目錄

一、STL簡介?

1.STL是什么

2.STL的內(nèi)容

?3.STL的使用前提

二、string類

1.string類 是什么

2.string類的特點(diǎn)和操做

?構(gòu)造和初始化

?字符串大小和容量

?字符訪問和修改

?字符串連接和拼接

?子串操作

?字符串比較

?字符串修改

?獲取字符的ASCII碼

?字符串大小寫轉(zhuǎn)換:


前言

? ? ? ? 前面我們講了C語言的基礎(chǔ)知識,也了解了一些數(shù)據(jù)結(jié)構(gòu),并且講了有關(guān)C++的命名空間的一些知識點(diǎn)以及關(guān)于C++的缺省參數(shù)、函數(shù)重載,引用 和 內(nèi)聯(lián)函數(shù)也認(rèn)識了什么是類和對象以及怎么去new一個‘對象’,也相信大家都掌握的不錯,接下來博主將會帶領(lǐng)大家繼續(xù)學(xué)習(xí)有關(guān)C++比較重要的知識點(diǎn)——STL(string類)。下面話不多說坐穩(wěn)扶好咱們要開車了??

一、STL簡介?

1.STL是什么

????????C++的Standard Template LibrarySTL)是C++標(biāo)準(zhǔn)庫中一個包含了豐富的模板類和函數(shù)的部分,它提供了許多常用的數(shù)據(jù)結(jié)構(gòu)和算法,以及與之相關(guān)的功能組件。STL的設(shè)計(jì)目標(biāo)是提供通用、高效和可重用的模板類,以便于開發(fā)人員編寫高質(zhì)量的C++代碼。

2.STL的內(nèi)容

????????STL包含六個主要組件:分別是容器(Containers)、算法(Algorithms)、迭代器(Iterators)、函數(shù)對象(Function Objects)、適配器(Adapters)和分配器(Allocators),這六大組件相互之間緊密配合,提供了豐富而強(qiáng)大的功能,使得開發(fā)人員能夠更高效地進(jìn)行數(shù)據(jù)管理、算法處理和代碼編寫。?下面對這些組件進(jìn)行簡單的介紹(后面的文章也會對這些逐一分析

  1. 容器(Containers):容器是STL中用于存儲數(shù)據(jù)的組件。STL提供多種容器類,像向量(vector)、鏈表(list)、隊(duì)列(queue)、棧(stack)、集合(set)、映射(map)等。每種容器都有特定的特性和適用場景,開發(fā)人員可以根據(jù)需求選擇合適的容器類來管理數(shù)據(jù)。

  2. 算法(Algorithms):算法是STL中的核心部分。它提供了豐富的函數(shù)模板,用于處理容器中的元素。STL的算法包括排序、搜索、復(fù)制、變換等功能,比如?sort、find、copy?等。算法通常通過迭代器來操作容器,因此可以很方便地應(yīng)用于各種容器,并且具有良好的可重用性和效率。

  3. 迭代器(Iterators):迭代器是STL中的通用遍歷機(jī)制。它相當(dāng)于指針一樣,用于遍歷容器中的元素。迭代器提供了對容器元素的訪問和操作方法,使得算法可以在不依賴具體容器類型的情況下進(jìn)行工作。STL提供了多種類型的迭代器,包括輸入迭代器、輸出迭代器、正向迭代器、雙向迭代器和隨機(jī)訪問迭代器,根據(jù)容器和算法的要求選擇合適的迭代器類型。

  4. 函數(shù)對象(Function Objects):函數(shù)對象是可以像函數(shù)一樣調(diào)用的對象。STL中的算法和某些容器類使用函數(shù)對象來指定操作的方式,如排序順序、元素匹配等。STL提供了一些已定義的函數(shù)對象,比如等于判斷(equal_to)、比較大?。?strong>less)、取反(not)等,也可以自定義函數(shù)對象來適應(yīng)特定需求。

  5. 適配器(Adapters):適配器是STL中的一種特殊組件。它可以將一種容器或迭代器的接口轉(zhuǎn)換為另一種接口,以便于在不同上下文中使用。STL提供了多種適配器,如堆棧適配器(stack)、隊(duì)列適配器(queue)和優(yōu)先隊(duì)列適配器(priority_queue),它們在底層使用其他容器類,通過適配器接口提供不同的行為。

  6. 分配器(Allocators):分配器用于管理容器使用的內(nèi)存分配和釋放。STL提供了默認(rèn)的分配器(allocator),也允許開發(fā)人員定義自己的分配器。分配器可以根據(jù)具體的內(nèi)存需求進(jìn)行內(nèi)存管理,以提高效率和靈活性。

【C++入門到精通】C++入門 —— string類(STL),C++,c++,開發(fā)語言

?3.STL的使用前提

  1. 了解C++基礎(chǔ)知識:STL是建立在C++語言的基礎(chǔ)上的,因此使用STL需要對C++基礎(chǔ)知識有一定的了解,包括類、繼承、模板等概念。

  2. 熟悉STL的組件:要使用STL,需要對STL的六大組件(容器、算法、迭代器、函數(shù)對象、適配器和分配器)有一定的了解,知道它們的特性、用法以及如何選擇合適的組件來解決問題。

  3. 理解模板編程:STL使用了模板編程的技術(shù),在使用STL時需要理解模板的基本語法以及模板的實(shí)例化和函數(shù)重載等機(jī)制。

二、string類

1.string類 是什么

????????在C++中,std::string是標(biāo)準(zhǔn)庫提供的一個類,用于處理字符串。它是基于模板的容器類,位于命名空間std中。std::string類提供了許多成員函數(shù)和操作符,用于對字符串進(jìn)行各種操作,比如插入、刪除、查找、連接等。與C風(fēng)格的字符串相比,std::string類更加安全和方便,它負(fù)責(zé)自動管理字符串內(nèi)存,具有動態(tài)大小調(diào)整的能力。

2.string類的特點(diǎn)和操做

?構(gòu)造和初始化

????????string類提供了多種構(gòu)造函數(shù)和初始化方式,用于創(chuàng)建和初始化字符串對象。以下是 std::string 類的構(gòu)造函數(shù)和初始化方式的介紹:

?默認(rèn)構(gòu)造函數(shù)
string();

創(chuàng)建一個空的字符串對象。

?字符串常量初始化
string(const char* s);
string(const char* s, size_type count);

????????使用C風(fēng)格字符串? s??來初始化字符串對象。傳入的字符串可以是以 null 字符結(jié)尾的字符數(shù)組( const char* ),或者可以指定字符個數(shù)( size_type count )。

?復(fù)制構(gòu)造函數(shù)
string(const string& other);

????????使用一個已有的字符串對象? other?來創(chuàng)建一個新的字符串對象。新對象是? other?的副本,內(nèi)容相同。

?填充構(gòu)造函數(shù)
string(size_type count, char ch);

創(chuàng)建一個包含? count??個字符? ch??的字符串對象。

?迭代器范圍初始化
template <class InputIt>
string(InputIt first, InputIt last);

????????使用迭代器指定的字符范圍? [first, last)??來初始化字符串對象。這使得可以使用其他容器或字符數(shù)組等作為初始化源。

?初始化列表初始化
string(initializer_list<char> ilist);

使用初始化列表來初始化字符串對象。

除了構(gòu)造函數(shù),還可以使用賦值運(yùn)算符? =??將一個字符串對象賦值給另一個字符串對象。

std::string str8 = str1; ? ?// 使用賦值運(yùn)算符
str1 = str2; ? ? ? ? ? ? ? ?// 使用賦值運(yùn)算符

????????通過這些構(gòu)造函數(shù)和初始化方式,可以創(chuàng)建并初始化字符串對象,以便對其進(jìn)行后續(xù)的字符串操作和處理。

?初始化總結(jié)
int main()
{
	std::string str1;                       // 默認(rèn)構(gòu)造函數(shù)
	std::string str2("Hello");              // 字符串常量初始化
	std::string str3("Hello", 3);           // 字符串常量初始化,指定字符個數(shù)
	std::string str4(str2);                 // 復(fù)制構(gòu)造函數(shù),創(chuàng)建副本
	std::string str5(5, 'A');               // 填充構(gòu)造函數(shù),創(chuàng)建包含5個字符'A'的字符串
	std::string str6(str2.begin(), str2.end());// 迭代器范圍初始化
	std::string str7{'C', 'P', 'P'};           // 初始化列表初始化
	std::string str8 = str1;    // 使用賦值運(yùn)算符
	str1 = str2;                // 使用賦值運(yùn)算符
	return 0;
}

?字符串大小和容量

std::string 類中,可以使用成員函數(shù)來獲取字符串的大小和容量。

?字符串大小

size() ,? length() : 返回字符串中字符的個數(shù)(即字符串的長度)。

std::string str = "Hello";
std::cout << str.size(); ? ?// 輸出:5
std::cout << str.length(); ? ?// 輸出:5
?字符串容量

capacity()? : 返回字符串內(nèi)存分配的容量,即字符串可以容納的字符數(shù),而不會進(jìn)行重新分配。
reserve(size_type count)? : 請求將字符串的容量設(shè)置為至少? count??個字符
shrink_to_fit()? : 要求字符串按照實(shí)際大小來分配內(nèi)存,即縮小容量以適應(yīng)當(dāng)前字符串的大小。

std::string str = "Hello";
std::cout << str.capacity(); ? // 輸出:15
str.reserve(20);
std::cout << str.capacity(); ? // 輸出:20
str.shrink_to_fit();
std::cout << str.capacity(); ? // 輸出:5

??注意

  • 字符串的大小是指字符的個數(shù),而不是字符串占用的字節(jié)數(shù)。一個字符可以占用多個字節(jié)的存儲空間,例如UTF-8編碼中的某些特殊字符。
  • 字符串的容量不一定等于大小。字符串的容量取決于內(nèi)存的分配策略和字符串的動態(tài)增長過程。通常情況下,當(dāng)增加字符串長度時,字符串會自動重新分配更大的內(nèi)存塊,以容納新的字符,從而增加容量。
  • 調(diào)用reserve()函數(shù)可以預(yù)留一定的容量,避免頻繁的內(nèi)存重新分配,提高性能。但是并不總是需要手動調(diào)用reserve(),因?yàn)?span style="color:#1c7892;">std::string類會根據(jù)實(shí)際需要自動調(diào)整容量。

通過上面這些函數(shù),可以方便地獲取和管理字符串的大小和容量信息。

?字符訪問和修改

????????在std::string類中,提供了多種方法來訪問和修改字符串中的字符,通過下面這些函數(shù),可以方便地訪問和修改字符串中的特定字符,或者在字符串的末尾添加或刪除字符。

?字符訪問
  • operator[](size_type pos): 使用下標(biāo)操作符?[]?來訪問指定位置?pos?處的字符。
  • at(size_type pos): 使用?at()?函數(shù)來訪問指定位置?pos?處的字符,并進(jìn)行邊界檢查。
  • front(): 獲取字符串的第一個字符。
  • back(): 獲取字符串的最后一個字符。
std::string str = "Hello";
char ch1 = str[0];        // 使用下標(biāo)操作符訪問首字符,ch1='H'
char ch2 = str.at(2);     // 使用at()函數(shù)訪問第三個字符,ch2='l'
char ch3 = str.front();   // 獲取字符串的第一個字符,ch3='H'
char ch4 = str.back();    // 獲取字符串的最后一個字符,ch4='o'
?字符修改
  • operator[](size_type pos): 使用下標(biāo)操作符?[]?來修改指定位置?pos?處的字符。
  • at(size_type pos): 使用?at()?函數(shù)來修改指定位置?pos?處的字符,并進(jìn)行邊界檢查。
  • push_back(char ch): 在字符串的末尾添加一個字符。
  • pop_back(): 刪除字符串的末尾字符。
  • clear(): 清空字符串中的所有字符。
  • resize(size_type count): 改變字符串的大小。新的大小會影響字符串的字符個數(shù)。
  • resize(size_type count, char ch): 改變字符串的大小,并用指定字符?ch?填充新增部分。
std::string str = "Hello";
str[0] = 'h';           // 使用下標(biāo)操作符修改首字符,字符串變?yōu)?hello"
str.at(3) = 'P';        // 使用at()函數(shù)修改第四個字符,字符串變?yōu)?helPo"
str.push_back('!');     // 在末尾添加字符'!',字符串變?yōu)?helPo!"
str.pop_back();         // 刪除末尾的字符,字符串變?yōu)?helPo"
str.clear();            // 清空字符串,字符串成為空字符串
str.resize(7);          // 改變字符串大小為7,添加空字符,即字符串變?yōu)?helPo\0\0"
str.resize(10, '*');    // 改變字符串大小為10,用'*'填充剩余部分,即字符串變?yōu)?helPo****"

?字符串連接和拼接

????????在std::string類中,提供了多種方法來進(jìn)行字符串的連接和拼接操作,以合并多個字符串為一個字符串,這些方法可以通過操作符重載和成員函數(shù)來實(shí)現(xiàn)。

?字符串連接

operator+?:使用?+?操作符將兩個字符串連接起來,產(chǎn)生一個新的字符串。

operator+=?:使用?+=?操作符將一個字符串追加到另一個字符串的末尾,修改原字符串。

std::string str1 = "Hello";
std::string str2 = "World";

std::string str3 = str1 + str2;    // 使用+操作符進(jìn)行字符串連接,得到字符串"HelloWorld"

str1 += str2;    // 使用+=操作符將str2追加到str1的末尾,修改str1的值為"HelloWorld"
?字符串拼接

append(const char* s):將一個以 null 字符結(jié)尾的字符數(shù)組(C風(fēng)格字符串)追加到當(dāng)前字符串的末尾。

append(const std::string& str):將另一個字符串追加到當(dāng)前字符串的末尾。

append(const char* s, size_type count):將指定個數(shù)的字符從一個以 null 字符結(jié)尾的字符數(shù)組(C風(fēng)格字符串)追加到當(dāng)前字符串的末尾。

std::string str = "Hello";

str.append(" World");                  // 將C風(fēng)格字符串追加到字符串末尾,字符串變?yōu)?Hello World"

std::string otherStr = " from C++";
str.append(otherStr);                   // 將另一個字符串追加到字符串末尾,字符串變?yōu)?Hello World from C++"

????????以上方法可以靈活地進(jìn)行字符串的連接和拼接操作,使用不同的方法可以根據(jù)具體需求選擇最合適的方式來實(shí)現(xiàn)字符串的合并。

?子串操作

????????在?std::string類中,提供了多種方法來進(jìn)行子串操作,即從一個字符串中獲取部分字符組成新的子串。這些方法可以用于檢索、提取和操作字符串的特定部分。

?substr()?函數(shù)

substr(pos, count)從位置?pos?開始,提取長度為?count?的子串。

std::string str = "Hello, World!";
std::string sub1 = str.substr(0, 5);   // 獲取從位置0開始的5個字符,得到子串"Hello"
std::string sub2 = str.substr(7);      // 獲取從位置7開始到末尾的子串,得到子串"World!"
?getline()?函數(shù)

getline(input_stream, str, delimiter):從輸入流?input_stream?中讀取一行字符,并將結(jié)果存儲在字符串?str?中,以指定的分隔符?delimiter?結(jié)束,分隔符默認(rèn)為換行符。

std::string input;
std::getline(std::cin, input);   // 從標(biāo)準(zhǔn)輸入讀取一行字符,存儲在input字符串中
?find()?函數(shù)

find(substring, pos):從位置?pos?開始,在字符串中搜索子串?substring,返回第一次出現(xiàn)的位置;如果未找到,返回?std::string::npos

std::string str = "Hello, World!";
size_t pos = str.find("World");    // 在字符串中搜索子串"World",得到位置7
?rfind()函數(shù)

rfind(substring, pos):從字符串中的pos位置開始,從后向前搜索子串substring,返回最后一次出現(xiàn)的位置。如果找不到子串,則返回std::string::npos

std::string str = "Hello, World!";
size_t pos = str.rfind("o");    // 從位置12開始,從后向前搜索字符"o",得到位置8
?find_first_of()函數(shù)

find_first_of(chars, pos):從字符串中的pos位置開始,搜索位于字符集chars中的任何一個字符第一次出現(xiàn)的位置。如果找不到任何字符,則返回std::string::npos

std::string str = "Hello, World!";
size_t pos = str.find_first_of("Wdl");    // 從位置0開始,在字符串中搜索字符集"Wdl"中的任一字符,得到位置2(字符"l"第一次出現(xiàn)的位置)
??find_last_of()函數(shù)

find_last_of(chars, pos):從字符串中的pos位置開始,從后向前搜索位于字符集chars中的任何一個字符最后一次出現(xiàn)的位置。如果找不到任何字符,則返回std::string::npos

std::string str = "Hello, World!";
size_t pos = str.find_last_of("odl");    // 從位置12開始,從后向前搜索字符集"odl"中的任一字符,得到位置10(字符"l"最后一次出現(xiàn)的位置)
?replace()?函數(shù):

replace(pos, count, new_string):從位置?pos?開始,替換長度為?count?的子串為?new_string

std::string str = "Hello, World!";
str.replace(7, 5, "Everyone");     // 從位置7開始,將長度為5的子串"World"替換為字符串"Everyone"

????????通過這些子串操作方法,可以方便地提取特定的子串、查找特定的字符位置、替換子串等,以滿足具體的字符串處理需求。

?字符串比較

????????在std::string類中,提供了多種方法來進(jìn)行字符串的比較操作,用于判斷兩個字符串是否相等或者確定它們的大小關(guān)系。這些方法可以通過操作符重載和成員函數(shù)來實(shí)現(xiàn)。

?操作符重載
  • ==?:檢查兩個字符串是否相等。
  • !=?:檢查兩個字符串是否不相等。
  • <?:檢查第一個字符串是否小于第二個字符串(按字典序比較)。
  • >?:檢查第一個字符串是否大于第二個字符串(按字典序比較)。
  • <=?:檢查第一個字符串是否小于等于第二個字符串(按字典序比較)。
  • >=?:檢查第一個字符串是否大于等于第二個字符串(按字典序比較)。
std::string str1 = "Hello";
std::string str2 = "World";
bool isEqual = (str1 == str2);    // 判斷兩個字符串是否相等
bool isNotEqual = (str1 != str2); // 判斷兩個字符串是否不相等
bool isLess = (str1 < str2);      // 判斷str1是否小于str2
bool isGreater = (str1 > str2);   // 判斷str1是否大于str2
bool isLessOrEqual = (str1 <= str2);    // 判斷str1是否小于等于str2
bool isGreaterOrEqual = (str1 >= str2); // 判斷str1是否大于等于str2
?成員函數(shù)

compare(str)按字典序比較當(dāng)前字符串和參數(shù)字符串str。返回一個整數(shù),表示比較結(jié)果。

  • 返回值 < 0:當(dāng)前字符串小于str。
  • 返回值 > 0:當(dāng)前字符串大于str。
  • 返回值 = 0:當(dāng)前字符串等于str
std::string str1 = "Hello";
std::string str2 = "World";
int result = str1.compare(str2);   // 比較str1和str2

?字符串修改

????????在std::string類中,提供了多種方法來修改字符串的內(nèi)容,這些方法可以用于插入、刪除、替換字符或子串,以及改變字符串的大小等操作。

?插入字符或子串

insert(pos, str):在指定位置?pos?前插入字符串?str

insert(pos, str, subpos, sublen):在指定位置?pos?前插入字符串?str?的子串,子串長度為?sublen,起始位置為?subpos

std::string str = "Hello";
str.insert(5, "World");      // 在位置5前插入字符串"World",得到字符串"HelloWorld"
str.insert(0, "I am ", 2, 4);// 在位置0前插入字符串"I am "的子串"am ",得到字符串"am HelloWorld"
?刪除字符或子串

erase(pos, count):從指定位置?pos?開始,刪除?count?個字符。

std::string str = "Hello, World!";
str.erase(5, 7);            // 從位置5開始刪除7個字符,得到字符串"Hello!"
?替換字符或子串

replace(pos, count, str):從指定位置?pos?開始,將長度為?count?的子串替換為字符串?str

std::string str = "Hello, World!";
str.replace(7, 5, "Everyone");  // 從位置7開始,將長度為5的子串"World"替換為字符串"Everyone",得到字符串"Hello, Everyone!"
?改變字符串大小

resize(new_size):改變字符串的大小為?new_size,截斷或填充空字符。

resize(new_size, fill):改變字符串的大小為?new_size,使用字符?fill?填充。

std::string str = "Hello";
str.resize(10);            // 將字符串大小改變?yōu)?0,默認(rèn)用空字符填充,得到字符串"Hello     "
str.resize(7, '!');        // 將字符串大小改變?yōu)?,用字符'!'填充,得到字符串"Hello!!"

????????通過這些字符串修改方法,可以方便地插入、刪除、替換字符或子串,以及改變字符串的大小,以滿足不同的字符串處理需求。根據(jù)具體情況選擇最適合的方法來修改字符串。

?獲取字符的ASCII碼

????????在C++的std::string類中,可以使用索引操作符[]或成員函數(shù)at()來獲取字符串中特定位置字符的ASCII碼。

?索引操作符[]

str[index]:返回字符串str中位置為index的字符的ASCII碼。請注意,索引從0開始

std::string str = "Hello";
char ch = str[0];         // 獲取字符串第一個字符'H'
int ascii = static_cast<int>(ch);   // 轉(zhuǎn)換字符為ASCII碼
?成員函數(shù)at()

str.at(index):返回字符串str中位置為index的字符的ASCII碼。如果索引超出了字符串的范圍,at()函數(shù)會拋出std::out_of_range

std::string str = "Hello";
char ch = str.at(1);      // 獲取字符串第二個字符'e'
int ascii = static_cast<int>(ch);   // 轉(zhuǎn)換字符為ASCII碼

????????在上面的代碼中,我們先獲取到字符串中特定位置的字符,然后使用static_cast<int>(ch)將字符轉(zhuǎn)換為相應(yīng)的ASCII碼。注意,將字符轉(zhuǎn)換為整數(shù)類型可以使用static_cast來進(jìn)行顯式類型轉(zhuǎn)換。

?字符串大小寫轉(zhuǎn)換:

????????在C++的std::string類中,提供了一些方法來進(jìn)行字符串的大小寫轉(zhuǎn)換操作。這些方法可以將字符串中的字符轉(zhuǎn)換為大寫或小寫形式。

?換為大寫

toupper()函數(shù):將字符串中的字符轉(zhuǎn)換為大寫形式。

std::string str = "Hello, World!";
for (char& c : str) {
    c = std::toupper(c);   // 將字符轉(zhuǎn)換為大寫形式
}
?換為小寫

tolower()函數(shù):將字符串中的字符轉(zhuǎn)換為小寫形式。

std::string str = "Hello, World!";
for (char& c : str) {
    c = std::tolower(c);   // 將字符轉(zhuǎn)換為小寫形式
}

????????在上面的代碼中,我們使用循環(huán)遍歷字符串中的每個字符,并通過std::toupper()std::tolower()函數(shù)將其轉(zhuǎn)換為大寫或小寫形式。請注意,這些函數(shù)返回轉(zhuǎn)換后的字符,并且在循環(huán)中我們通過引用來修改原始字符串。

?C++標(biāo)準(zhǔn)庫轉(zhuǎn)換

????????除了使用循環(huán)遍歷字符進(jìn)行轉(zhuǎn)換,還可以使用C++標(biāo)準(zhǔn)庫算法和字符串迭代器來實(shí)現(xiàn)字符串的大小寫轉(zhuǎn)換:

#include <algorithm>
#include <cctype>

std::string str = "Hello, World!";
std::transform(str.begin(), str.end(), str.begin(), ::toupper);   // 將字符串轉(zhuǎn)換為大寫形式
std::transform(str.begin(), str.end(), str.begin(), ::tolower);   // 將字符串轉(zhuǎn)換為小寫形式

????????在上面的代碼中,我們使用std::transform()算法和字符處理函數(shù)::toupper::tolower來實(shí)現(xiàn)字符串的大小寫轉(zhuǎn)換。::toupper::tolower是函數(shù)指針,用于執(zhí)行字符的大寫和小寫轉(zhuǎn)換。

總結(jié)

????????本文通過對STL(Standard Template Library)和string類的介紹,為讀者提供了對STL和string類的全面了解。在STL簡介部分,我們了解到STL是C++標(biāo)準(zhǔn)庫的重要組成部分,分別是容器算法、迭代器、函數(shù)對象、適配器分配器六個核心內(nèi)容,使用前需要掌握C++的基本語法和模板的使用。在string類部分,我們深入研究了string類的定義、特點(diǎn)和常見操作。構(gòu)造和初始化包括使用初始化列表初始化和初始化總結(jié),字符串大小和容量提供了獲取字符串大小和容量的方法,字符訪問和修改可以方便地操作字符串的字符,字符串連接和拼接可以合并字符串,子串操作可以從字符串中提取子串。字符串比較提供了多種方法來比較字符串的大小關(guān)系,字符串修改可以插入、刪除和替換字符或子串,獲取字符的ASCII碼可以得到字符的ASCII碼值,而字符串大小寫轉(zhuǎn)換可以將字符串轉(zhuǎn)換為大寫或小寫形式。通過本文的學(xué)習(xí),讀者將掌握STL的基本概念和string類的常用操作,從而能夠更加靈活和高效地處理和操作字符串。

溫馨提示

? ? ? ? 感謝您對博主文章的關(guān)注與支持!在閱讀本篇文章的同時,我們想提醒您留下您寶貴的意見和反饋。如果您喜歡這篇文章,可以點(diǎn)贊、評論和分享給您的同學(xué),這將對我提供巨大的鼓勵和支持。另外,我計(jì)劃在未來的更新中持續(xù)探討與本文相關(guān)的內(nèi)容。我會為您帶來更多關(guān)于C++以及編程技術(shù)問題的深入解析、應(yīng)用案例和趣味玩法等。請繼續(xù)關(guān)注博主的更新,不要錯過任何精彩內(nèi)容!

? ? ? ? 再次感謝您的支持和關(guān)注。我們期待與您建立更緊密的互動,共同探索C++、算法和編程的奧秘。祝您生活愉快,排便順暢!

【C++入門到精通】C++入門 —— string類(STL),C++,c++,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-629290.html

到了這里,關(guān)于【C++入門到精通】C++入門 —— string類(STL)的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【C++入門到精通】C++入門 —— map & multimap (STL)

    【C++入門到精通】C++入門 —— map & multimap (STL)

    各位小伙伴們,在這個美好的中秋節(jié)來臨之際,我衷心祝福你和你的家人度過一個幸福、團(tuán)圓的時刻。愿明月的皎潔照耀你的每一天,團(tuán)圓的月餅傳遞著我對你的思念和祝福。祝福你在中秋佳節(jié)里收獲幸福與快樂,家庭和睦,心想事成。中秋快樂! 前面我們講了C語言的基礎(chǔ)

    2024年02月08日
    瀏覽(26)
  • C++入門之stl六大組件--String庫函數(shù)的介紹

    文章目錄 一、為什么學(xué)習(xí)string類 1.C語言中的字符串 二、標(biāo)準(zhǔn)庫中的string類 1.string類 2.string類的常用接口 1.string類對象的常見構(gòu)造 2.string類對象的容量操作 3.string類對象的訪問以及遍歷操作 4.string類對象的修改操作 5.string類的非成員函數(shù) 總結(jié) ? C語言中,字符串是以\\0結(jié)尾的

    2024年02月16日
    瀏覽(16)
  • 【C++入門到精通】C++入門 —— priority_queue(STL)優(yōu)先隊(duì)列

    【C++入門到精通】C++入門 —— priority_queue(STL)優(yōu)先隊(duì)列

    ?文章綁定了VS平臺下std::priority_queue的源碼,大家可以下載了解一下?? 前面我們講了C語言的基礎(chǔ)知識,也了解了一些數(shù)據(jù)結(jié)構(gòu),并且講了有關(guān)C++的命名空間的一些知識點(diǎn)以及關(guān)于C++的缺省參數(shù)、函數(shù)重載,引用 和 內(nèi)聯(lián)函數(shù)也認(rèn)識了什么是類和對象以及怎么去new一個 ‘對象

    2024年02月12日
    瀏覽(27)
  • 【C++入門到精通】C++入門 —— 容器適配器、stack和queue(STL)

    【C++入門到精通】C++入門 —— 容器適配器、stack和queue(STL)

    文章綁定了VS平臺下std::stack和std::queue的源碼,大家可以下載了解一下?? 前面我們講了C語言的基礎(chǔ)知識,也了解了一些數(shù)據(jù)結(jié)構(gòu),并且講了有關(guān)C++的命名空間的一些知識點(diǎn)以及關(guān)于C++的缺省參數(shù)、函數(shù)重載,引用 和 內(nèi)聯(lián)函數(shù)也認(rèn)識了什么是類和對象以及怎么去new一個 ‘對象

    2024年02月12日
    瀏覽(29)
  • 【C++入門到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入門 ]

    【C++入門到精通】哈希 (STL) _ unordered_map _ unordered_set [ C++入門 ]

    歡迎各位大佬們的關(guān)顧,本文將介紹unordered系列容器以及其中的兩個重要成員: unordered_map 和 unordered_set 。unordered_map是一種無序的關(guān)聯(lián)容器,它使用哈希表來存儲鍵值對,并提供高效的插入、查找和刪除操作。在本文中,我們將首先介紹unordered_map的基本概念和特點(diǎn),然后詳

    2024年02月08日
    瀏覽(20)
  • 【c++】STL--string

    【c++】STL--string

    ? ? ? ? 最開始我們學(xué)習(xí)c語言的時候,我們發(fā)現(xiàn)刷題或者寫代碼都是比較麻煩的,如果說用c語言造一輛車,那么我需要用c語言先把輪子造好--各個零件,當(dāng)我們造好之后再組裝。那么c++則是造好了輪子,只需要我們組裝就好了。這里的的STL里有各個組件,我只要熟悉的掌握

    2024年02月03日
    瀏覽(27)
  • C++ STL string類

    C++ STL string類

    目錄 一.為什么學(xué)習(xí)string類 (1) C語言中的字符串 (2)標(biāo)準(zhǔn)庫里面的string類 二. string類的常用接口說明 (1)string類對象的常見構(gòu)造 (2)string類對象的容量操作 1.size(),length(). 2. capacity() 3.empty() ?4.clear() ?5.reserve() ?6.resize() (3)string類對象的訪問及遍歷操作 ?1.operator[ pos

    2024年02月13日
    瀏覽(25)
  • 【C++】STL——string類詳解

    【C++】STL——string類詳解

    ?? 作者簡介:一名在后端領(lǐng)域?qū)W習(xí),并渴望能夠?qū)W有所成的追夢人。 ?? 個人主頁:不 良 ?? 系列專欄:??C++ ???Linux ?? 學(xué)習(xí)格言:博觀而約取,厚積而薄發(fā) ?? 歡迎進(jìn)來的小伙伴,如果小伙伴們在學(xué)習(xí)的過程中,發(fā)現(xiàn)有需要糾正的地方,煩請指正,希望能夠與諸君一同

    2024年02月11日
    瀏覽(23)
  • C++ [STL之string模擬實(shí)現(xiàn)]

    C++ [STL之string模擬實(shí)現(xiàn)]

    本文已收錄至《C++語言》專欄! 作者:ARMCSKGT 前面我們介紹了STL容器string的部分接口使用,有了string使我們對字符串的操作如魚得水,其實(shí)string不止于使用方便,其實(shí)現(xiàn)也有許多我們值得學(xué)習(xí)的地方,本節(jié)將為您介紹string常用接口的代碼實(shí)現(xiàn)! 本文接口的實(shí)現(xiàn)借助于C++官方

    2024年02月05日
    瀏覽(23)
  • C++STL詳解 string【C++】

    C++STL詳解 string【C++】

    函數(shù)模板是一個藍(lán)圖,它本身并不是函數(shù),是編譯器用使用方式產(chǎn)生特定具體類型函數(shù)的模具。所以其實(shí)模板就是將本來應(yīng)該我們做的重復(fù)的事情交給了編譯器 在編譯器編譯階段,對于模板函數(shù)的使用,編譯器需要根據(jù)傳入的實(shí)參類型來推演生成對應(yīng)類型的函數(shù)以供調(diào)用。比

    2024年02月08日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包