wordpress 眾籌模板seo效果最好的是
愿我如星君如月,夜夜流光相皎潔。
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——《車(chē)逍遙篇》【宋】范成大
目錄
正文:
主要特點(diǎn):
基本操作:
?代碼演示:
總結(jié):
今天我們接著上次的章節(jié)繼續(xù),這次我們來(lái)說(shuō)一個(gè)為解決上個(gè)方法的缺陷而誕生的方法string類(lèi)。
C++字符串操作中的陷阱
正文:
我們先來(lái)看一看什么是C++,還有關(guān)于它的定義:
在C++中,string
是一個(gè)非常重要的類(lèi),用于處理文本數(shù)據(jù)。它是標(biāo)準(zhǔn)模板庫(kù)(Standard Template Library, STL)的一部分,定義在頭文件<string>
中。與C語(yǔ)言中的字符數(shù)組(如char[]
)相比,string
類(lèi)提供了更豐富的功能和更高的安全性。
主要特點(diǎn):
- 動(dòng)態(tài)內(nèi)存管理:
string
類(lèi)自動(dòng)管理內(nèi)存,不需要手動(dòng)分配和釋放內(nèi)存,減少了內(nèi)存泄漏的風(fēng)險(xiǎn)。 - 豐富的成員函數(shù):
string
類(lèi)提供了大量的成員函數(shù)來(lái)執(zhí)行各種字符串操作,如連接、查找、比較、替換、插入和刪除等。 - 邊界檢查:與C語(yǔ)言中的字符數(shù)組相比,
string
類(lèi)在訪(fǎng)問(wèn)越界時(shí)會(huì)拋出異常或返回錯(cuò)誤,提高了程序的安全性。(正好可以解決C語(yǔ)言中的字符數(shù)組帶來(lái)的缺陷)
基本操作:
- 當(dāng)然在開(kāi)始之前我們需要提前寫(xiě)入這個(gè)類(lèi)的頭文件:include<string>
- 定義字符串然后進(jìn)行初始化。
- 同樣也可以賦值,添加元素到字符串中。
- 訪(fǎng)問(wèn)字符串的元素,還可以對(duì)其進(jìn)行修改。
- 比較字符串之間的大小,字符串的長(zhǎng)度大小,然后輸出結(jié)果。(<? >? ?==? !=? >=? <=)。
- 拼接字符串或者拷貝字符串。
?代碼演示:
include<iostream>
using namespace std;
include<string>
include<string.h>
int main()
{
string n;
//三種初始化方式
string n="li hua";
string s("my name");
string s=string("name");
利用字符和計(jì)數(shù)來(lái)初始化x(輸出結(jié)果是 8個(gè)x)
string x('h',8);兩種求長(zhǎng)度的結(jié)果是一樣的
cout<<n.size()<<endl;
cout<<n.length()<<endl;
設(shè)計(jì)的字符串的預(yù)存大小
cout<<n.capacity()<<endl;下面就是兩個(gè)字符數(shù)組的大小比較,之前講到的關(guān)系運(yùn)算符都可以用
cout<<(n==s)<<endl;
cout<<(n<s)<<endl;
cout<<(n!=s)<,endl;轉(zhuǎn)換為C語(yǔ)言風(fēng)格的字符串,利用c_str()的方式來(lái)轉(zhuǎn)換
const char*c_str1=n.c_str();
cout<<"轉(zhuǎn)換后的字符串"<<c_str<<endl;隨機(jī)訪(fǎng)問(wèn)(獲取字符串中的某個(gè)元素)
string a="mine";
cout<<s[0]<<endl;//類(lèi)似數(shù)組的訪(fǎng)問(wèn)方式指定訪(fǎng)問(wèn):
char ch = n[0]; // 使用下標(biāo)訪(fǎng)問(wèn),但注意越界
char firstChar = n.front(); // 獲取第一個(gè)字符
char lastChar = n.back(); // 獲取最后一個(gè)字符字符串拷貝
string s=n;直接鏈接兩個(gè)字符串字符串的拼接:
string b="is yours";
string c="peter";
string d=c+b;
c+=b;這一步和上面的那步相似,只不過(guò)是簡(jiǎn)化的方式;而且完整的寫(xiě)法是:c=c+b;這里省略了一步。 for(int i=0;i<n.size; i++)
{
cout<<n[i]<<endl;
}for(int i=0;i<d.size; i++)
{
cout<<n[i]<<endl;
}return 0;
}
總結(jié):
string結(jié)合了C++的新特性。
使用起來(lái)比原始的C語(yǔ)言的方法更加的安全和方便。
對(duì)比性能要求不高的程序可以使用。
新語(yǔ)言的分享:
然后我就要說(shuō)一下最近關(guān)注到的新語(yǔ)言rust,這個(gè)語(yǔ)言目前是最有希望可以去達(dá)到C++成就的語(yǔ)言,因?yàn)檫@個(gè)語(yǔ)言在開(kāi)發(fā)的時(shí)候就會(huì)避免C語(yǔ)言中經(jīng)常出現(xiàn)的一些安全型問(wèn)題。
Rust 是一種系統(tǒng)編程語(yǔ)言,它注重安全性、速度和并發(fā)性。Rust 旨在提供與 C 和 C++ 相當(dāng)?shù)男阅?#xff0c;同時(shí)確保內(nèi)存安全,這是通過(guò)所有權(quán)、借用和生命周期的概念來(lái)實(shí)現(xiàn)的。Rust 旨在提供零成本抽象,意味著在運(yùn)行時(shí)使用 Rust 編寫(xiě)的程序不會(huì)比使用傳統(tǒng)系統(tǒng)編程語(yǔ)言編寫(xiě)的程序慢。
以下是 Rust 的一些關(guān)鍵特性:
- 所有權(quán)系統(tǒng):Rust 通過(guò)所有權(quán)系統(tǒng)管理內(nèi)存,不需要垃圾回收。每個(gè)值都有一個(gè)所有者,當(dāng)所有者離開(kāi)作用域時(shí),其資源會(huì)被釋放。這個(gè)機(jī)制避免了內(nèi)存泄漏和其他常見(jiàn)的內(nèi)存錯(cuò)誤。
- 借用:Rust 提供了借用的概念,允許你使用引用而不取得所有權(quán)。這樣,函數(shù)可以在不擁有數(shù)據(jù)的情況下讀取數(shù)據(jù)(不可變借用),或者同時(shí)讀寫(xiě)數(shù)據(jù)(可變借用),但同時(shí)保證內(nèi)存安全。
- 并發(fā):Rust 的并發(fā)模型強(qiáng)調(diào)線(xiàn)程安全。Rust 的類(lèi)型系統(tǒng)和所有權(quán)規(guī)則確保了數(shù)據(jù)競(jìng)爭(zhēng)是不可能的,因此可以更輕松地編寫(xiě)安全的并發(fā)代碼。
- 零成本抽象:Rust 在編譯時(shí)不增加任何運(yùn)行時(shí)開(kāi)銷(xiāo)。這意味著,開(kāi)發(fā)者可以使用高級(jí)的抽象來(lái)編寫(xiě)代碼,而不會(huì)影響性能。
- 包管理器和構(gòu)建工具:Rust 有一個(gè)內(nèi)置的包管理器和構(gòu)建系統(tǒng),名為 Cargo,它簡(jiǎn)化了依賴(lài)管理和構(gòu)建過(guò)程。
Rust 適合用在需要高性能和高并發(fā)的場(chǎng)合,例如開(kāi)發(fā)操作系統(tǒng)、文件系統(tǒng)、游戲引擎、網(wǎng)絡(luò)服務(wù)器等。
?
🆗到這里,這篇關(guān)于:C++字符串中的string類(lèi)操作就說(shuō)完了,求一個(gè)免費(fèi)的贊,感謝閱讀。