中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

wordpress中文免費模板下載寧波seo外包推廣公司

wordpress中文免費模板下載,寧波seo外包推廣公司,愛采購下載app,wap網站管理系統(tǒng)1:C 語言中的字符串 vs C string 類 1.1 C 語言中的字符串 在 C 語言中,字符串本質上是以 \0 結尾的字符數組。C 標準庫為此提供了 str 系列函數,如 strlen()、strcpy() 和 strcat() 等。雖然這些函數可以操作字符串,但它們的操…

1:C 語言中的字符串 vs C++ string 類

1.1 C 語言中的字符串

在 C 語言中,字符串本質上是以 \0 結尾的字符數組。C 標準庫為此提供了 str 系列函數,如 strlen()、strcpy() 和 strcat() 等。雖然這些函數可以操作字符串,但它們的操作十分繁瑣且容易出錯,尤其是在內存管理方面。

例如,在 C 語言中進行字符串拼接的代碼如下:

#include <stdio.h>
#include <string.h>int main() {char str1[50] = "Hello";char str2[50] = " World";// 字符串連接strcat(str1, str2);printf("%s\n", str1); ?// 輸出:Hello Worldreturn 0;
}


問題:C 語言中的字符串操作容易出現內存溢出,因為需要手動管理字符數組的長度。

1.2 C++ string 類的優(yōu)勢

C++ 中的 string 類使得字符串操作更加安全和簡便。它封裝了復雜的內存管理,并提供了類似數組的接口,開發(fā)者不再需要手動管理字符串的長度和內存。例如,使用 string 進行字符串拼接:

#include <iostream>
#include <string>
using namespace std;int main() {string str1 = "Hello";string str2 = " World";// 使用 += 操作符進行拼接str1 += str2;cout << str1 << endl; ?// 輸出:Hello Worldreturn 0;
}

2:string 類的構造與基礎操作

2.1 string 類的構造方法

string 類支持多種構造方式,以下是常見的構造函數:

函數名?? ?功能描述
string()?? ?默認構造一個空字符串
string(const char* s)?? ?使用 C 字符串 s 構造 string 對象
string(size_t n, char c)?? ?構造一個包含 n 個字符 c 的字符串
string(const string& s)?? ?使用已有的 string 對象進行拷貝構造

2.1.1 示例代碼:構造字符串

#include <iostream>
#include <string>
using namespace std;int main() {string s1; ? ? ? ? ? ? ? ? // 空字符串string s2("Hello C++"); ? ? // 通過C字符串初始化string s3(s2); ? ? ? ? ? ? ?// 拷貝構造string s4(5, 'A'); ? ? ? ? ?// 5個'A'字符的字符串cout << "s1: " << s1 << endl;cout << "s2: " << s2 << endl;cout << "s3: " << s3 << endl;cout << "s4: " << s4 << endl;return 0;
}

輸出示例:

s1:?
s2: Hello C++
s3: Hello C++
s4: AAAAA

2.2 string 對象的常見操作

函數名?? ?功能描述
size()?? ?返回字符串的長度
length()?? ?返回字符串的長度,與 size() 等價
capacity()?? ?返回當前分配的存儲空間大小
empty()?? ?判斷字符串是否為空,若為空返回 true
clear()?? ?清空字符串內容
reserve()?? ?為字符串預留存儲空間,不改變有效字符的個數
resize()?? ?改變字符串的長度,若增大則用默認字符填充

2.2.1:字符串容量操作

注意:size()與length()方法底層實現原理完全相同,引入size()的原因是為了與其他容器的接口保持一致,一般情況下基本都是用size()。
clear()只是將string中有效字符清空,不改變底層空間大小。
resize(size_t n) 與 resize(size_t n, char c)都是將字符串中有效字符個數改變到n個,不 同的是當字符個數增多時:resize(n)用'\0'來填充多出的元素空間,resize(size_t n, char c)用字符c來填充多出的元素空間。注意:resize在改變元素個數時,如果是將元素個數增多,可能會改變底層容量的大小,如果是將元素個數減少,底層空間總大小不變。
reserve(size_t res_arg=0):為string預留空間,不改變有效元素個數,當reserve的參數小于string的底層空間總大小時,reserve不會改變容量大小。
size和capacity都不包括’\0’

#include <iostream>
#include <string>
using namespace std;int main() {string s = "Hello";cout << "Size: " << s.size() << endl; ? ? // 返回字符串長度cout << "Capacity: " << s.capacity() << endl; ?// 返回容量s.resize(10, 'X'); ? ? ? ? ? ? ? ? ? ? ? ?// 將長度改為10,多出部分用'X'填充cout << "Resized: " << s << endl;s.clear(); ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?// 清空字符串cout << "Is empty: " << s.empty() << endl; ?// 檢查是否為空return 0;
}

輸出示例:

Size: 5
Capacity: 15
Resized: HelloXXXXX
Is empty: 1

2.3 字符串的遍歷與訪問

可以通過以下幾種方式訪問字符串中的字符:

方法?? ?功能描述
operator[]?? ?返回或設置指定位置的字符
at()?? ?返回指定位置的字符并進行邊界檢查
begin()/end()?? ?返回字符串的首尾迭代器,用于遍歷字符串
rbegin()/rend()?? ?返回反向迭代器,支持從后向前遍歷字符串

push_back()?? ?在字符串末尾追加一個字符
append()?? ?在字符串末尾追加另一個字符串或子字符串

注意:

在string尾部追加字符時,s.push_back(c) / s.append(1, c) / s += 'c'三種的實現方式差不多,一般情況下string類的+=操作用的比較多,+=操作不僅可以連接單個字符,還可以連接字符串。
對string操作時,如果能夠大概預估到放多少字符,可以先通過reserve把空間預留好。

2.3.1 遍歷與訪問字符

#include <iostream>
#include <string>
using namespace std;int main() {string s = "Hello C++";// 使用下標訪問cout << "First character: " << s[0] << endl;// 使用迭代器遍歷for (auto it = s.begin(); it != s.end(); ++it) {cout << *it << ' ';}cout << endl;return 0;
}

輸出示例

First character: H
H e l l o ? C + +

3:字符串的高級操作

3.1 字符串的查找操作

string 類提供了多種查找子字符串或字符的方法。常見的查找方法如下:

函數名?? ?功能說明
find()?? ?在字符串中查找子字符串或字符,返回其首次出現的位置,找不到則返回 string::npos
rfind()?? ?反向查找字符串,返回最后一次出現子串或字符的位置

find_first_of()?? ?查找指定字符集中的任意一個字符,返回第一次出現的索引
find_last_of()?? ?查找指定字符集中的任意一個字符,返回最后一次出現的索引
string::npos 是 std::string 類的一個常量靜態(tài)成員變量,它是用來表示查找操作失敗時的返回值。

它通常等于無符號整數類型的最大值(size_t(-1)),具體值是實現定義的,但它在所有實現中都用于表示“未找到”的狀態(tài)。
?

#include <iostream>
#include <string>
using namespace std;int main() {cout << "Value of string::npos: " << string::npos << endl;return 0;
}

輸出結果:

Value of string::npos: 18446744073709551615 ?// 這是 size_t 的最大值 (通常等于 -1)

3.1.1 查找子字符串

#include <iostream>
#include <string>
using namespace std;int main() {string s = "Hello World";// 查找 "World" 在字符串中的位置size_t pos = s.find("World");if (pos != string::npos) {cout << "'World' found at position: " << pos << endl;} else {cout << "'World' not found" << endl;}// 反向查找 'o'size_t rpos = s.rfind('o');cout << "'o' last found at position: " << rpos << endl;return 0;
}

輸出示例:

'World' found at position: 6
'o' last found at position: 7

3.1.2 示例代碼:查找任意字符

#include <iostream>
#include <string>
using namespace std;int main() {string s = "Hello, World!";string charset = "aeiou"; ?// 查找元音字母// 使用 find_first_of 查找字符集中任意字符第一次出現的位置size_t first_pos = s.find_first_of(charset);if (first_pos != string::npos) {cout << "First vowel in the string found at position: " << first_pos << endl;} else {cout << "No vowel found in the string." << endl;}// 使用 find_last_of 查找字符集中任意字符最后一次出現的位置size_t last_pos = s.find_last_of(charset);if (last_pos != string::npos) {cout << "Last vowel in the string found at position: " << last_pos << endl;} else {cout << "No vowel found in the string." << endl;}return 0;
}

輸出示例:

First vowel in the string found at position: 1
Last vowel in the string found at position: 8

3.3?字符串的比較操作

在 C++ 中,string 類支持字符串的比較操作,既可以使用運算符 ==、!=、<、> 等,也可以通過 compare() 方法進行更細粒度的比較。

方法?? ?功能說明
operator==?? ?判斷兩個字符串是否相等
operator!=?? ?判斷兩個字符串是否不相等
operator<?? ?判斷當前字符串是否小于另一個字符串
operator>?? ?判斷當前字符串是否大于另一個字符串
compare()?? ?進行詳細的字符串比較,返回 0 表示相等,負值表示小于,正值表示大于

3.2.1 :字符串比較

#include <iostream>
#include <string>
using namespace std;int main() {string str1 = "Apple";string str2 = "Banana";if (str1 == str2) {cout << "Strings are equal" << endl;} else {cout << "Strings are not equal" << endl;}// 使用 compare() 方法比較int result = str1.compare(str2);if (result == 0) {cout << "Strings are equal" << endl;} else if (result < 0) {cout << "str1 is less than str2" << endl;} else {cout << "str1 is greater than str2" << endl;}return 0;
}

輸出示例:

Strings are not equal
str1 is less than str2

3.3字符串的替換操作

在 C++ 中,string 類允許我們通過 replace() 方法替換字符串中的部分內容。

函數名?? ?功能說明
replace()?? ?替換從指定位置開始的若干字符為新字符串

3.3.1 替換字符串中的部分內容

#include <iostream>
#include <string>
using namespace std;int main() {string str = "Hello World";// 替換 "World" 為 "C++"str.replace(6, 5, "C++");cout << str << endl; ?// 輸出:Hello C++return 0;
}

輸出示例:

Hello C++


3.4?字符串的截取操作

string 類提供了 substr() 方法來提取字符串中的子字符串。該方法非常有用,尤其是在處理文件路徑或URL時。

函數名?? ?功能說明
substr()?? ?從指定位置開始,截取若干字符并返回子字符串

3.4.1提取子字符串

#include <iostream>
#include <string>
using namespace std;int main() {string str = "Hello World";// 從位置 6 開始截取 5 個字符string sub = str.substr(6, 5);cout << "Substring: " << sub << endl;return 0;
}

輸出示例:

Substring: World

3.5字符串的插入與刪除操作

在 C++ 中,string 類支持通過 insert() 在字符串的指定位置插入子字符串,或通過 erase() 從指定位置刪除字符。

這兩個方法因為時間復雜度挺高的,所以還是避免常用

函數名?? ?功能說明
insert()?? ?在字符串的指定位置插入字符或子字符串
erase()?? ?刪除字符串中指定位置的若干字符

3.5.1 插入與刪除操作

#include <iostream>
#include <string>
using namespace std;int main() {string str = "Hello World";// 在索引 5 處插入一個逗號str.insert(5, ",");cout << "After insert: " << str << endl;// 刪除索引 5 開始的 1 個字符str.erase(5, 1);cout << "After erase: " << str << endl;return 0;
}

輸出示例:

After insert: Hello, World
After erase: Hello World

3.6 字符串與數值的轉換

C++ 提供了 to_string() 和 stoi() 等函數,幫助我們在字符串和數值之間進行轉換。這在處理用戶輸入、文件解析等場景中非常常用。

函數名?? ?功能說明
to_string()?? ?將數值轉換為字符串
stoi()?? ?將字符串轉換為整數
stof()?? ?將字符串轉換為浮點數

3.6.1 數字與字符串的相互轉換

#include <iostream>
#include <string>
using namespace std;int main() {int num = 42;string str = to_string(num); ?// 數字轉字符串cout << "String: " << str << endl;string strNum = "123";int parsedNum = stoi(strNum); ?// 字符串轉整數cout << "Parsed Integer: " << parsedNum << endl;return 0;
}

輸出示例:

String: 42
Parsed Integer: 123

http://www.risenshineclean.com/news/64907.html

相關文章:

  • 蘇州網站網絡營銷推廣石家莊seo代理商
  • 小程序大概需要多少錢南京seo圈子
  • 山南網站建設網絡平臺推廣方案
  • 做編程題的網站全國新冠疫苗接種率
  • seo營銷網站的設計標準百度快照優(yōu)化
  • 有什么專門搜試卷做的網站app推廣平臺排行榜
  • 重慶裝修貸廣州seo服務外包
  • 廣州天河區(qū)網站建設搜索引擎推廣有哪些
  • 移動端是指手機還是電腦優(yōu)化大師如何刪掉多余的學生
  • 安卓市場2022最新版下載河南網站關鍵詞優(yōu)化
  • 蘇州網站建設選蘇州夢易行百度網游排行榜
  • 余姚網站制作軟文營銷是什么意思
  • 俄文網站策劃搜索引擎都有哪些
  • 燕郊做網站的外貿網站建設 google
  • 淘客軟件自動做網站百度網址大全舊版
  • 網站界面用什么軟件做百度云電腦版網站入口
  • 適合做外鏈的網站互聯(lián)網平臺
  • 社區(qū)問答網站開發(fā)谷歌推廣開戶
  • 杭州網站建設杭州磁力引擎
  • 百度網站快速排名公司重慶seo網絡推廣
  • 佛山市城市建設檔案館網站競猜世界杯
  • 深圳網站建設html5惠州seo怎么做
  • 做外貿收費的網站seo交流論壇
  • 買公司的網站建設北京seo顧問外包
  • 盤古建站模板seo研究中心論壇
  • 河南官網網站建設廣告語
  • 互動網站設計與制作提供seo顧問服務適合的對象是
  • 上海裝修公司做網站seo日常工作
  • 小網站建設360搜索引擎
  • 西藏做網站找誰網址關鍵詞查詢網站