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

【C++】string類的基礎(chǔ)操作

這篇具有很好參考價(jià)值的文章主要介紹了【C++】string類的基礎(chǔ)操作。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

??個(gè)人主頁??
?個(gè)人專欄——C++學(xué)習(xí)?
??點(diǎn)擊關(guān)注??一起學(xué)習(xí)C語言????

目錄

導(dǎo)讀

1. 基本概述

2.?string類對(duì)象的常見構(gòu)造

3.?string類對(duì)象的容量操作

4. string類對(duì)象的訪問及遍歷操作

5. 迭代器

6. string類對(duì)象的修改操作

6.1 基本修改操作

6.2 c_str()函數(shù)

6.3 find + npos、rfind和substr

7. 輸入輸出流、關(guān)系運(yùn)算符以及getline

7.1輸入輸出流

7.2 關(guān)系運(yùn)算符

7.3 getline


導(dǎo)讀

今天我們來學(xué)習(xí)在C++中string類的常見用法,比如構(gòu)造、容量操作、遍歷訪問以及一些修改操作。

1. 基本概述

C++中的string類是一個(gè)用于處理字符串的標(biāo)準(zhǔn)庫類。它提供了一些常用的操作和函數(shù),使得字符串的處理更加方便和高效。

  1. 字符串的表示:string類可以表示一個(gè)字符序列,可以包含任意長(zhǎng)度的字符。字符串可以由字符數(shù)組或者字符串字面值初始化。

  2. 字符串的操作:string類提供了一系列操作函數(shù),包括字符串的連接、復(fù)制、查找、比較等??梢酝ㄟ^這些操作函數(shù)對(duì)字符串進(jìn)行各種操作。

  3. 字符串的長(zhǎng)度:string類提供了成員函數(shù)length()和size()來獲取字符串的長(zhǎng)度,即字符的個(gè)數(shù)。

  4. 字符串的訪問:string類的字符可以通過下標(biāo)操作符[]來訪問,也可以通過at()函數(shù)來訪問。同時(shí),還可以通過迭代器來遍歷字符串。

  5. 字符串的修改:string類的字符可以通過下標(biāo)操作符[]進(jìn)行修改,也可以通過成員函數(shù)append()、insert()、erase()等進(jìn)行修改。

  6. 字符串的輸入輸出:string類可以通過輸入輸出流進(jìn)行字符串的輸入和輸出,可以參與標(biāo)準(zhǔn)的輸入輸出操作。

  7. 字符串的比較:string類提供了比較操作符==、!=、>、<、>=、<=來比較字符串的大小。

總之,string類是C++中用來處理字符串的一個(gè)非常重要的類,提供了豐富的操作函數(shù)和方法,方便了字符串的處理和操作。

2.?string類對(duì)象的常見構(gòu)造

函數(shù)名稱 功能說明
string() 構(gòu)造空的string類對(duì)象,即空字符串
string(const char* s) 用C-string來構(gòu)造string類對(duì)象
string(size_t n, char c) string類對(duì)象中包含n個(gè)字符c
string(const string&s) 拷貝構(gòu)造函數(shù)
void test_string1()
{
	string s0;			//使用默認(rèn)構(gòu)造函數(shù)構(gòu)造一個(gè)空的string對(duì)象s0。
	string s1("hello world");//使用字符串字面值構(gòu)造一個(gè)string對(duì)象s1
	string s2(s1);//使用s1進(jìn)行拷貝構(gòu)造,構(gòu)造一個(gè)新的string對(duì)象s2
	string s3(s1, 5, 3);//構(gòu)造一個(gè)從s1的第5個(gè)字符開始的長(zhǎng)度為3的子串,構(gòu)造的string對(duì)象為s3。
	string s4(s1, 5, 10);//造一個(gè)從s1的第5個(gè)字符開始的長(zhǎng)度為10的子串,
	string s5(s1, 5);//構(gòu)造一個(gè)從s1的第5個(gè)字符開始的子串,直到字符串末尾,

	cout << s0 << endl;
	cout << s1 << endl;
	cout << s2 << endl;
	cout << s3 << endl;
	cout << s4 << endl;
	cout << s5 << endl;

	string s6(10, '#');//使用重復(fù)10次的字符'#'構(gòu)造一個(gè)string對(duì)象s6。
	cout << s6 << endl;

	s0 = s6;//將s6的值賦給s0
	cout << s0 << endl;
}
int main()
{
	test_string1();
	return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言??

3.?string類對(duì)象的容量操作

函數(shù)名稱 功能說明
size 返回字符串有效字符長(zhǎng)度
length 返回字符串有效字符長(zhǎng)度
capacity 返回空間總大小
empty 檢測(cè)字符串釋放為空串,是返回true,否則返回false
clear 清空有效字符
reserve 為字符串預(yù)留空間**
resize 將有效字符的個(gè)數(shù)該成n個(gè),多出的空間用字符c填充
void capacity_operations()
{
    string str = "hello world";

    cout << "Size of the string: " << endl;
    cout << str.size() << endl;

    cout << "Length of the string: " << endl;
    cout << str.length() << endl;

    str.resize(5); // 修改字符串的長(zhǎng)度為5
    cout << "After resizing the string: " << endl;
    cout << str << endl;

    str.resize(10, 'a'); // 修改字符串的長(zhǎng)度為10,并用字符 'a' 填充剩余部分
    cout << "After resizing and filling the string: " << endl;
    cout << str << endl;

    str.clear(); // 清空字符串
    cout << "After clearing the string: " << endl; 
    cout << str << endl;

    cout << "Is the string empty? " << endl;
    cout << (str.empty() ? "Yes" : "No") << endl;
    
    cout << "Capacity of the string: " << endl;
    cout << str.capacity() << endl;

    str.reserve(20); // 設(shè)置容量為20
    cout << "New capacity of the string: " << endl;
    cout << str.capacity() << endl;
}

int main()
{
    capacity_operations();

    return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言

注意:

  1. size()與length()方法底層實(shí)現(xiàn)原理完全相同,引入size()的原因是為了與其他容器的接口保持一 致,一般情況下基本都是用size()。
  2. clear()只是將string中有效字符清空,不改變底層空間大小。
  3. resize(size_t n) 與 resize(size_t n, char c)都是將字符串中有效字符個(gè)數(shù)改變到n個(gè),不同的是當(dāng)字 符個(gè)數(shù)增多時(shí):resize(n)用0來填充多出的元素空間,resize(size_t n, char c)用字符c來填充多出的 元素空間。注意:resize在改變?cè)貍€(gè)數(shù)時(shí),如果是將元素個(gè)數(shù)增多,可能會(huì)改變底層容量的大 小,如果是將元素個(gè)數(shù)減少,底層空間總大小不變。
  4. reserve(size_t res_arg=0):為string預(yù)留空間,不改變有效元素個(gè)數(shù),當(dāng)reserve的參數(shù)小于 string的底層空間總大小時(shí),reserver不會(huì)改變?nèi)萘看笮 ?/li>

在這里可能有小伙伴們注意到了

為什么capacity返回的容量會(huì)比我們實(shí)際的多一些?

capacity()?函數(shù)返回當(dāng)前字符串的容量,即字符串在不重新分配內(nèi)存的情況下可以容納的字符數(shù)。容量包括字符串實(shí)際存儲(chǔ)的字符數(shù)以及額外的預(yù)留空間。

預(yù)留空間是為了避免頻繁地進(jìn)行內(nèi)存重新分配操作,當(dāng)字符串的空間不足時(shí),string 類會(huì)自動(dòng)分配一塊更大的內(nèi)存空間,并將原來的字符拷貝到新的內(nèi)存中。

需要注意的是,capacity()?返回的容量不一定和實(shí)際分配的內(nèi)存大小相等。實(shí)際分配的內(nèi)存大小可以通過?sizeof(string)?來獲得,這個(gè)大小包括了除了存儲(chǔ)字符之外的其他開銷,比如指針、長(zhǎng)度信息等。

4. string類對(duì)象的訪問及遍歷操作

函數(shù)名稱 功能說明
operator[ ]? 返回pos位置的字符,const string類對(duì)象調(diào)用
begin+ end? begin獲取一個(gè)字符的迭代器 + end獲取最后一個(gè)字符下一個(gè)位置的迭代器
rbegin + rend? begin獲取一個(gè)字符的迭代器 + end獲取最后一個(gè)字符下一個(gè)位置的迭代器
范圍for C++11支持更簡(jiǎn)潔的范圍for的新遍歷方式
void access_string()
{
    string str = "hello world";

    // 使用下標(biāo)訪問單個(gè)字符
    cout << "Using index access:";
    for (size_t i = 0; i < str.size(); i++)
    {
        cout << str[i] << " ";
    }
    cout << endl;

    // 使用迭代器訪問單個(gè)字符
    cout << "Using iterator access:";
    for (auto it = str.begin(); it != str.end(); ++it)
    {
        cout << *it << " ";
    }
    cout << endl;

    // 使用范圍-based for循環(huán)遍歷字符
    cout << "Using range-based for loop:";
    for (char ch : str)
    {
        cout << ch << " ";
    }
    cout << endl;
}

int main()
{
    access_string();

    return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言

operator[]是C++中用于訪問容器或數(shù)組中元素的運(yùn)算符。

使用operator[]訪問字符串中的字符時(shí),如果索引越界,行為是未定義的。因此,在使用operator[]之前,應(yīng)該確保索引在有效范圍內(nèi)??梢允褂?code>size()函數(shù)獲取字符串的長(zhǎng)度,并將索引與長(zhǎng)度進(jìn)行比較來確保不越界。

rbegin()?和?rend()?是用于反向遍歷字符串的迭代器?

rbegin()?函數(shù)返回一個(gè)指向字符串最后一個(gè)字符的逆向迭代器,即反向起始迭代器,而?rend()?函數(shù)返回一個(gè)指向字符串第一個(gè)字符的前一個(gè)位置的逆向迭代器,即反向結(jié)束迭代器。

范圍for循環(huán)是C++11引入的一種語法糖,用于迭代一個(gè)范圍內(nèi)的元素。?

我們使用范圍for循環(huán)來遍歷字符串str中的字符。在每次迭代時(shí),當(dāng)前字符被賦值給變量ch,然后我們將其輸出。

范圍for循環(huán)會(huì)自動(dòng)處理迭代器的初始化和結(jié)束條件,并且會(huì)在循環(huán)內(nèi)部按順序遍歷范圍內(nèi)的所有元素。

5. 迭代器

迭代器是一種用于訪問容器(如數(shù)組、鏈表、字符串等)中元素的對(duì)象。它類似于指針,可以用來遍歷容器中的元素,并進(jìn)行讀取、修改等操作。

在 C++ 中,string 類也提供了迭代器來遍歷字符串中的每個(gè)字符。

string類提供了多種類型的迭代器,包括正向迭代器、反向迭代器和常量迭代器。

int main() 
{
    string str = "Hello, World!";

    // 正向迭代器
    string::iterator it;
    for (it = str.begin(); it != str.end(); ++it) 
    {
        cout << *it; // 輸出當(dāng)前字符
    }

    cout << endl;

    // 反向迭代器
    string::reverse_iterator rit;
    for (rit = str.rbegin(); rit != str.rend(); ++rit) 
    {
        cout << *rit; // 輸出當(dāng)前字符
    }
    cout << endl;

    // 使用常量迭代器遍歷字符串
    string::const_iterator its;
    for (its = str.begin(); its != str.end(); ++its) 
    {
        cout << *its << " ";
    }
    cout << endl;

    return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言

使用常量迭代器可以確保在遍歷字符串時(shí)不會(huì)修改字符串的內(nèi)容。常量迭代器可以通過使用const_iteratorconst_reverse_iterator類型來聲明。

6. string類對(duì)象的修改操作

函數(shù)名稱 功能說明
push_back 在字符串后尾插字符c
append 在字符串后追加一個(gè)字符串
operator+=? 在字符串后追加字符串str
c_str 返回C格式字符串
find + npos 從字符串pos位置開始往后找字符c,返回該字符在字符串中的位置
rfind 從字符串pos位置開始往前找字符c,返回該字符在字符串中的位置
substr 在str中從pos位置開始,截取n個(gè)字符,然后將其返回

6.1 基本修改操作

int main() 
{
    string str = "Hello";

    // 使用賦值運(yùn)算符修改字符串的內(nèi)容
    str = "Hello World";
    cout << str << endl;

    //使用push_back函數(shù)在字符串的末尾添加一個(gè)字符。
    str.push_back('?');
    cout << str << endl;

    // 使用+=運(yùn)算符進(jìn)行字符串追加
    str += "!";
    cout << str << endl;

    // 使用append函數(shù)進(jìn)行字符串追加
    str.append(" Welcome");
    cout << str << endl;

    // 使用insert函數(shù)在指定位置插入字符或子字符串
    str.insert(6, " to");
    cout << str << endl;

    // 使用erase函數(shù)刪除指定位置的字符或子字符串
    str.erase(11, 8);
    cout << str << endl;

    // 使用replace函數(shù)替換指定位置的字符或子字符串
    str.replace(6, 2, "everybody");
    cout << str << endl;

    //使用assign函數(shù)將字符序列賦值給字符串對(duì)象
    str.assign(" xxxxx");
    cout << str << endl;

    //將字符序列的一部分賦值給字符串對(duì)象
    str.assign("Hello World", 5);
    cout << str << endl;

    return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言

insert/erase/replace能少用就要少用,因?yàn)榛径家矂?dòng)數(shù)據(jù),效率不高。

6.2 c_str()函數(shù)

c_str()是string類的一個(gè)成員函數(shù),用于返回一個(gè)指向string對(duì)象中字符數(shù)組的指針。一般情況下,我們使用c_str()來將string對(duì)象轉(zhuǎn)換為C風(fēng)格字符串。

int main() 
{
    string str = "Hello, World!";
    const char* cstr = str.c_str();

    cout << cstr << endl;

    return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言

6.3 find + npos、rfind和substr

find+npos:

find函數(shù)用于在字符串中查找指定子串的位置。npos是string類的靜態(tài)成員常量,它的值是一個(gè)特殊的無效位置(通常為-1)。

int main() 
{
    string str = "Hello, World!";
    string subStr = "World";

    size_t found = str.find(subStr);
    if (found != string::npos) 
    {
        cout << "子字符串所在位置: " << found << endl;
    }
    else {
        cout << "沒有找到" << endl;
    }

    return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言

需要注意的是,npos的值是一個(gè)特殊值,可以用于與find函數(shù)的返回值比較,以判斷子串是否找到。在大多數(shù)情況下,npos的值是一個(gè)非法的位置?。


rfind 函數(shù):

用于在字符串中從后往前查找子串的位置。rfind函數(shù)返回子串最后一次出現(xiàn)的位置,如果未找到則返回一個(gè)特殊的值npos

int main() 
{
    string str = "Hello, Hello, World!";

    size_t found = str.rfind("Hello");
    if (found != string::npos) 
    {
        cout << "Last occurrence found at position: " << found << endl;
    }
    else 
    {
        cout << "Substring not found." << endl;
    }

    return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言


substr函數(shù):

substr函數(shù)用于從一個(gè)字符串中提取子串。

它接受兩個(gè)參數(shù):開始位置和要提取的子串的長(zhǎng)度。

int main() 
{
    string str = "Hello, World!";

    // 提取從位置7開始的子串
    string sub1 = str.substr(7);
    cout << "Substring 1: " << sub1 << endl;

    // 提取從位置0開始長(zhǎng)度為5的子串
    string sub2 = str.substr(0, 5);
    cout << "Substring 2: " << sub2 << endl;

    return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言

注意:

如果提供的位置超出了字符串的長(zhǎng)度,或者指定的長(zhǎng)度超出了可用的子串長(zhǎng)度,都會(huì)導(dǎo)致未定義行為。因此,在使用substr函數(shù)時(shí)需要確保提供的參數(shù)符合字符串的有效范圍。

7. 輸入輸出流、關(guān)系運(yùn)算符以及getline

函數(shù) 功能說明
operator>> 輸入運(yùn)算符重載?
operator<<? 輸出運(yùn)算符重載
getline 獲取一行字符串
relational operators ?大小比較

7.1輸入輸出流

operator>>operator<<都是C++中的重載運(yùn)算符,用于對(duì)輸入流和輸出流進(jìn)行操作。

operator>>是輸入流運(yùn)算符,用于從輸入流中讀取數(shù)據(jù)。

istream& operator>>(istream& is, T& value);

其中,is是輸入流對(duì)象,value是要讀取數(shù)據(jù)的變量或?qū)ο蟆?code>operator>>函數(shù)返回一個(gè)輸入流對(duì)象,并將讀取到的數(shù)據(jù)存儲(chǔ)到value中。

operator<<是輸出流運(yùn)算符,用于向輸出流中寫入數(shù)據(jù)。

ostream& operator<<(ostream& os, const T& value);

其中,os是輸出流對(duì)象,value是要寫入輸出流中的變量或?qū)ο蟆?code>operator<<函數(shù)返回一個(gè)輸出流對(duì)象。

?這兩個(gè)運(yùn)算符可以重載為類成員函數(shù)或非成員函數(shù)。當(dāng)重載為類成員函數(shù)時(shí),第一個(gè)參數(shù)是隱式的,表示調(diào)用運(yùn)算符的對(duì)象;當(dāng)重載為非成員函數(shù)時(shí),可以在函數(shù)的參數(shù)列表中指定輸入/輸出流對(duì)象。

class Point 
{
public:
    int x, y;
};

//非成員函數(shù)
ostream& operator<<(ostream& os, const Point& p) 
{
    os << "(" << p.x << ", " << p.y << ")";
    return os;
}

//非成員函數(shù)
istream& operator>>(istream& is, Point& p) 
{
    is >> p.x >> p.y;
    return is;
}

int main() 
{
    Point p;
    cout << "Enter x and y coordinates: ";
    cin >> p;
    cout << "You entered: " << p << endl;
    return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言

operator<<被重載為非成員函數(shù),用于將Point對(duì)象的坐標(biāo)輸出到輸出流中;operator>>也被重載為非成員函數(shù),用于從輸入流中讀取坐標(biāo)并存儲(chǔ)到Point對(duì)象中。在main()函數(shù)中,程序首先提示用戶輸入坐標(biāo),然后使用operator>>運(yùn)算符將讀取到的坐標(biāo)存儲(chǔ)到Point對(duì)象p中,最后使用operator<<運(yùn)算符將p對(duì)象的值輸出到屏幕上。


7.2 關(guān)系運(yùn)算符

在C++中,string?類型可以使用關(guān)系運(yùn)算符(relational operators)進(jìn)行比較。以下是string?類型可用的關(guān)系運(yùn)算符:

  • ==:檢查兩個(gè)字符串是否相等。
  • !=:檢查兩個(gè)字符串是否不相等。
  • <:檢查第一個(gè)字符串是否小于第二個(gè)字符串(按字典順序比較)。
  • >:檢查第一個(gè)字符串是否大于第二個(gè)字符串(按字典順序比較)。
  • <=:檢查第一個(gè)字符串是否小于等于第二個(gè)字符串(按字典順序比較)。
  • >=:檢查第一個(gè)字符串是否大于等于第二個(gè)字符串(按字典順序比較)。
int main() 
{
    string str1 = "hello";
    string str2 = "world";

    if (str1 == str2) 
    {
        cout << "The strings are equal" << endl;
    }
    else if (str1 < str2) 
    {
        cout << "str1 is less than str2" << endl;
    }
    else 
    {
        cout << "str1 is greater than str2" << endl;
    }

    return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言

7.3 getline

getline?函數(shù),用于從輸入流(如鍵盤、文件)中讀取一行字符串。

getline(istream& input_stream, string& str, char delimiter);
  • input_stream?是輸入流,可以是?cin(鍵盤輸入)或?ifstream(文件輸入)等。
  • str?是用于存儲(chǔ)讀取的字符串的變量,它必須是?string?類型的引用。
  • delimiter?是一個(gè)可選參數(shù),表示行結(jié)束的分隔符,默認(rèn)值為換行符?\n。
int main() 
{
    string str;
    cout << "Enter a line of text: ";
    getline(cin, str);

    cout << "You entered: " << str << endl;

    return 0;
}

【C++】string類的基礎(chǔ)操作,C++學(xué)習(xí),算法,c++,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-838607.html

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

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

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

相關(guān)文章

  • 【C++】String類的模擬實(shí)現(xiàn)。

    ??博客主頁:小智_x0___0x_ ??歡迎關(guān)注:??點(diǎn)贊??收藏??留言 ??系列專欄:C++初階 ??代碼倉庫:小智的代碼倉庫 string類中需要三個(gè)成員變量分別記錄元素個(gè)數(shù)、容量和內(nèi)容。還需要一個(gè) size_t 類型npos-1表示整型的最大值。 這段代碼是 string 類的構(gòu)造函數(shù)。構(gòu)造函數(shù)是在

    2024年02月13日
    瀏覽(20)
  • 【C++】string類的模擬實(shí)現(xiàn)

    【C++】string類的模擬實(shí)現(xiàn)

    前言:在上一篇中我們講到了string類的使用方法,今天我們將進(jìn)一步的去學(xué)習(xí)string類,去底層看看它順帶模擬實(shí)現(xiàn)部分的內(nèi)容。 ?? 博主CSDN主頁:衛(wèi)衛(wèi)衛(wèi)的個(gè)人主頁 ?? ?? 專欄分類:高質(zhì)量C++學(xué)習(xí) ?? ??代碼倉庫:衛(wèi)衛(wèi)周大胖的學(xué)習(xí)日記?? ??關(guān)注博主和博主一起學(xué)習(xí)!一起努

    2024年03月21日
    瀏覽(22)
  • C++ String類的基本使用

    C++ String類的基本使用

    ????????放棄時(shí)間的人,時(shí)間也會(huì)放棄他?!勘葋?; 本篇章是關(guān)于string類內(nèi)一些函數(shù)的介紹以及使用方法,都是我們編程必須掌握的基礎(chǔ)! ? 全文共7000字左右. 話不多說安全帶系好,發(fā)車?yán)?(建議電腦觀看) 。 附:紅色,部分為重點(diǎn)部分;藍(lán)顏色為需要記憶的

    2024年02月09日
    瀏覽(29)
  • 【C++】string類的深入介紹

    【C++】string類的深入介紹

    作者:愛寫代碼的剛子 時(shí)間:2023.5.26 本篇博客主要深入介紹string類、string類的常用接口及操作,string中迭代器的使用,以及string中的部分方法。(由于篇幅有限,剩余方法以及string的深淺拷貝將在之后的博客介紹) 前言:C語言中,字符串是以’\\0’結(jié)尾的一些字符的集合,

    2024年02月08日
    瀏覽(26)
  • C++中string類的常用函數(shù)

    C++中string類的常用函數(shù)

    引言:在C語言中對(duì)于字符串的一些操作,例如在字符串末尾增加字符,對(duì)字符串拷貝等,我們可以通過調(diào)用庫中函數(shù)來完成這些操作,在C++中,我們把這些常規(guī)操作封裝成了string類,可以通過類對(duì)象直接調(diào)用這些函數(shù),使得更加符合了面向?qū)ο蟮乃枷搿?作用:返回字符串的有效字符長(zhǎng)度

    2024年02月08日
    瀏覽(25)
  • 【C++】string類的深淺拷貝問題

    【C++】string類的深淺拷貝問題

    我們知道,定義一個(gè)類的時(shí)候,如果我們沒有寫構(gòu)造,拷貝構(gòu)造,賦值運(yùn)算符重載,析構(gòu)方法的話,編譯器會(huì)自動(dòng)生成。當(dāng)該類成員中涉及到資源的管理時(shí),實(shí)現(xiàn)的就是淺拷貝。所以,以上這幾種方式是必須要程序猿手動(dòng)實(shí)現(xiàn)的。 舉例來看: 圖中所示:實(shí)現(xiàn)了構(gòu)造和析構(gòu),

    2023年04月26日
    瀏覽(23)
  • C++ 之 string類的模擬實(shí)現(xiàn)

    C++ 之 string類的模擬實(shí)現(xiàn)

    這學(xué)習(xí)我有三不學(xué) 昨天不學(xué),因?yàn)樽蛱焓莻€(gè)過去 明天不學(xué),因?yàn)槊魈爝€是個(gè)未知數(shù) 今天不學(xué),因?yàn)槲覀円钤诋?dāng)下,我就是玩嘿嘿~ –?–?–?–?–?–?–?–?–?–?–?–?–?–?–?–?–?–?–?-正文開始-?–?–?–?–?–?–?–?–?–?–

    2024年04月27日
    瀏覽(21)
  • 【C++初階】9. string類的模擬實(shí)現(xiàn)

    【C++初階】9. string類的模擬實(shí)現(xiàn)

    string類的完整實(shí)現(xiàn)放這里啦!快來看看吧 string類的作用就是將字符串類型實(shí)現(xiàn)更多功能,運(yùn)算符重載,增刪改查等等操作,所以其成員就包含char*的字符串 在之前的學(xué)習(xí)過程中,我們了解到類中存在的六個(gè)默認(rèn)函數(shù),其中就包含默認(rèn)構(gòu)造函數(shù),那么對(duì)于string類是否需要用戶自

    2024年02月09日
    瀏覽(20)
  • 【c++】string類的使用及模擬實(shí)現(xiàn)

    【c++】string類的使用及模擬實(shí)現(xiàn)

    我們先了解一下什么是OOP思想 OOP思想,即面向?qū)ο缶幊蹋∣bject-Oriented Programming)的核心思想,主要包括“抽象”、“封裝”、“繼承”和“多態(tài)”四個(gè)方面。 抽象:抽象是忽略一個(gè)主題中與當(dāng)前目標(biāo)無關(guān)的那些方面,以便充分地注意與當(dāng)前目標(biāo)有關(guān)的方面。抽象并不打算了

    2024年04月11日
    瀏覽(24)
  • 【C++】——string類的介紹及模擬實(shí)現(xiàn)

    【C++】——string類的介紹及模擬實(shí)現(xiàn)

    C語言中,字符串是以’\\0’結(jié)尾的一些字符的集合,為了操作方便,C標(biāo)準(zhǔn)庫中提供了一些str系列的庫函數(shù),但是這些庫函數(shù)與字符串是分離開的,不太符合OOP的思想,而且底層空間需要用戶自己管理,稍不留神可能還會(huì)越界訪問。所以我們今天來學(xué)習(xí)C++標(biāo)準(zhǔn)庫中的string類。

    2024年02月07日
    瀏覽(31)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包