C++字符串(string)操作解析:從基礎到進階

1. 字符串基礎:大小與容量

cpp

void test1() {string s1("Hello World");cout << "size : " << s1.size() << endl; // 輸出字符串長度cout << "capacity = " << s1.capacity() << endl; // 輸出字符串容量s1.reserve(100); // 預留空間cout << "reserve capacity = " << s1.capacity() << endl;s1.clear(); // 清除字符串內容cout << "clear size : " << s1.size() << endl;cout << "clear capacity = " << s1.capacity() << endl;cout << "clear s1 : " << s1 << endl;
}
  • size(): 返回字符串實際長度

  • capacity(): 返回字符串當前分配的存儲空間大小

  • reserve(n): 預留空間,避免頻繁重新分配內存

  • clear(): 清空字符串內容,但通常不會改變容量

2. 字符串遍歷與訪問

cpp

void test2() {string s1("Hello World");// 使用下標訪問for (int i = 0; i < s1.size(); i++) {cout << s1[i] << " ";}// 使用迭代器string::iterator it = s1.begin();while (it != s1.end()) {cout << *(it++) << " ";}// 使用反向迭代器string::reverse_iterator rit = s1.rbegin();while (rit != s1.rend()) {cout << *(rit++) << " ";}// 使用范圍for循環for (auto s : s1) {cout << s << " ";}
}

C++提供了多種遍歷字符串的方式:

  1. 下標操作符[]

  2. 正向迭代器iterator

  3. 反向迭代器reverse_iterator

  4. 范圍for循環(C++11引入)

3. 字符串修改操作

增加內容

cpp

// push_back: 尾部增加一個字符
s2.push_back('Y');// append: 在末尾添加字符串
s3.append("YM");
s3.append(5, 'y'); // 添加5個'y'// insert: 在指定位置插入
s4.insert(5, " YM");
s4.insert(5, 3, '*'); // 插入3個'*'// += 運算符
s5 += " YM";

刪除內容

cpp

// pop_back(): 刪除最后一個字符
s6.pop_back();// erase: 刪除指定位置字符
s7.erase(8, 1); // 刪除下標8開始的1個字符
s7.erase(s7.begin()); // 刪除開頭字符

修改內容

cpp

// replace: 替換內容
s8.replace(6, 2, "YM"); // 將下標6開始的2個字符替換為"YM"// swap: 交換內容
swap(s9, s10); // 算法庫的swap
s9.swap(s10);  // 字符串類的swap,效率更高

4. 字符串查找與子串操作

cpp

void test4() {string s1("Hello World");// find: 正向查找size_t pos = s1.find('l');// rfind: 反向查找size_t rpos = s1.rfind('l');// 查找第一個出現在/不出現在給定集合中的字符size_t fpos = s1.find_first_of("ol");size_t nfpos = s1.find_first_not_of("ol");// substr: 獲取子串string s = s1.substr(pos); // 從pos到結尾string s_part = s1.substr(pos, 3); // 從pos開始3個字符
}

查找函數返回string::npos(通常是size_t的最大值)表示未找到。

5. 字符串比較

字符串比較可以直接使用關系運算符:

cpp

string a = "apple";
string b = "banana";if (a < b) { // 字典序比較cout << "a comes before b";
}// 或者使用compare函數
int result = a.compare(b);
if (result < 0) {cout << "a is less than b";
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/93535.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/93535.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/93535.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

蘑兔音樂:音樂創作的魔法棒

在這個充滿創意與可能的時代&#xff0c;人人都有一顆渴望表達音樂之心。但傳統音樂創作&#xff0c;復雜的樂理、昂貴的設備&#xff0c;總讓人望而卻步。別擔心&#xff01;蘑兔 AI 音樂強勢來襲&#xff0c;它就是那個能讓音樂小白也能搞創作的神奇工具&#xff01;?靈感模…

從傳統到智能:RFID 技術如何重構壓縮機生產線

從傳統到智能&#xff1a;RFID 技術如何重構壓縮機生產線在工業 4.0 與中國制造 2025 戰略的深入推進下&#xff0c;作為空調核心部件的壓縮機制造業正加速從傳統生產模式向智能化轉型。壓縮機生產以高精度、大批量為顯著特點&#xff0c;長期面臨生產數據斷層、柔性化不足、質…

HTML5二十四節氣網站源碼

一. 二十四節氣文化主題網站概述 本網站以中國傳統文化瑰寶“二十四節氣”為核心&#xff0c;通過現代Web技術打造沉浸式文化體驗平臺&#xff0c;融合視覺美學與交互創新&#xff0c;全方位展現節氣的自然規律與人文內涵。網站采用響應式布局設計&#xff0c;適配多終端設備&…

微服務架構實戰指南:從單體應用到云原生的蛻變之路

&#x1f31f; Hello&#xff0c;我是蔣星熠Jaxonic&#xff01; &#x1f308; 在浩瀚無垠的技術宇宙中&#xff0c;我是一名執著的星際旅人&#xff0c;用代碼繪制探索的軌跡。 &#x1f680; 每一個算法都是我點燃的推進器&#xff0c;每一行代碼都是我航行的星圖。 &#x…

超越Transformer:大模型架構創新的深度探索

引言&#xff1a; 以GPT、Claude、Gemini等為代表的大語言模型&#xff08;LLMs&#xff09;已成為人工智能領域的核心驅動力。它們基于Transformer架構構建&#xff0c;在理解和生成人類語言方面展現出驚人的能力。然而&#xff0c;隨著模型規模指數級增長和對更長上下文、更高…

完整設計 之 智能合約系統:主題約定、代理協議和智能合約 (臨時命名)--騰訊元寶答問

本文要點和任務整體設計&#xff08;符號學 &#xff1a;為了詮釋學實踐運用 形。而上理論&#xff0c;將自己作為 兩者結合的 條帶 &#xff09;&#xff0c;包括三部分&#xff1a;內核&#xff08;設置-組態-主動把握的操作&#xff09;是認知學&#xff08;語義&#xff09…

同創物流學習記錄2·電車光電

燈在閃爍&#xff0c;照到你前面的東西了&#xff0c;它可以照前面&#xff0c;可以照6米遠。你那個電車前面五六米感應到東西了&#xff0c;它就會減速&#xff0c;然后到3米的樣子&#xff0c;它會再減速。然后再到1米2的樣子&#xff0c;它就會停下來。電車前側光電這個區域…

linux I2C核心、總線與設備驅動

一、 linux I2C體系結構linux的I2C體系結構分為3個組成部分1&#xff09;I2C核心I2C核心提供了I2C總線驅動與設備驅動的注冊、注銷方法&#xff0c;I2C通信方法&#xff08;即Algorithm&#xff09;上層的與具體適配器無關的代碼及其探測設備、檢測設備地址的上層代碼等…

跑實驗記錄

1.下載git&#xff08;base) mqmq-MS-7A59:~/桌面$ sudo apt update && sudo apt install git2.克隆項目&#xff08;base) mqmq-MS-7A59:~/桌面$ sudo apt update && sudo apt install git3.canda創建環境(base) mqmq-MS-7A59:~$ conda create -n HyTE python…

微軟動手了,聯合OpenAI + Azure 云爭奪AI服務市場

?開頭還是介紹一下群&#xff0c;如果感興趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, OceanBase, Sql Server等有問題&#xff0c;有需求都可以加群群內有各大數據庫行業大咖&#xff0c;可以解決你的問題。加群請聯系 liuaustin3 &#xff0c;&#xff08;共3300人左右 …

Reading Coach-微軟推出的免費AI閱讀教練

本文轉載自&#xff1a;Reading Coach-微軟推出的免費AI閱讀教練 - Hello123工具導航 ** 一、智能閱讀輔助工具 Reading Coach 是微軟推出的 AI 驅動閱讀訓練平臺&#xff0c;通過個性化故事生成與實時發音反饋&#xff0c;幫助學生提升閱讀流利度與詞匯量。平臺采用自適應學…

《軟件工程導論》實驗報告五 設計建模工具的使用(一)類圖

目 錄 一、實驗目的 二、實驗環境 三、學時分配 四、實驗內容與步驟 1. 百度搜索1-2張類圖&#xff0c;請重新繪制它們&#xff0c;并回答以下問題&#xff1a; 2. 根據以下描述&#xff0c;提取這個問題涉及的類&#xff0c;定義各個類之間的關系&#xff0c;并畫出類圖…

智慧景區導覽系統:基于WebGL的手繪地圖導覽設計與應用,DeepSeek大模型賦能精準游客引導服務

本文面向 景區信息化負責人、后端開發者、全棧工程師&#xff0c;旨在解決傳統景區導覽系統靜態地圖信息有限、人工導游成本高、景區服務人員咨詢壓力大 的核心痛點&#xff0c;提供從技術選型到落地部署的全鏈路解決方案。如需獲取智慧景區導覽系統解決方案請前往文章最下方獲…

使用uniapp自定義組件雙重支付密碼

自定義組件雙重支付密碼父組件<template><view class"container"><view class"top"></view><navbar navTitle"修改支付密碼"></navbar><!-- 雙重支付密碼 --><view class"box">//核心…

C語言+安全函數+非安全函數

在C語言中&#xff0c;許多標準庫函數&#xff08;如 strcpy、scanf、gets 等&#xff09;由于缺乏邊界檢查&#xff0c;容易導致 ?緩沖區溢出&#xff08;Buffer Overflow&#xff09;?、內存越界訪問? 等安全問題。為了解決這些問題&#xff0c;C11標準引入了 ?安全函數&…

android build.gradle中的namespace和applicationId的區別

namespace 和 applicationId 確實容作用&#xff1a;1. namespace引入版本&#xff1a;Android Gradle Plugin (AGP) 7.0 開始引入&#xff0c;替代 AndroidManifest.xml 里的 package 屬性。作用&#xff1a; 用于 代碼中的 R 文件、BuildConfig 生成的 Java/Kotlin 包名。決定…

數據結構初階(15)排序算法—交換排序(快速排序)(動圖演示)

2.3 交換排序 2.3.0 基本思想交換排序的基本思想&#xff1a;基本思想根據序列中兩個記錄鍵值的比較結果來對換這兩個記錄在序列中的位置。&#xff08;比較結果→交換位置&#xff09;特點將鍵值較大的記錄向序列的尾部移動&#xff0c;鍵值較小的記錄向序列的前部移動。比 換…

Apache Hudi:數據湖的實時革命

Apache Hudi是一個開源的數據湖存儲格式和框架&#xff0c;它通過引入類似數據庫的事務機制&#xff0c;解決了傳統數據湖在實時更新、低延遲查詢和增量消費方面的痛點。Hudi最初由Uber于2016年開發并應用于生產環境&#xff0c;2017年開源&#xff0c;2019年成為Apache孵化項目…

深度解析和鯨社區熱門項目:電商雙 11 美妝數據分析的細節與價值

在數據驅動決策的時代&#xff0c;電商大促期間的行業數據分析總能為從業者和學習者提供寶貴參考。今天&#xff0c;我們來詳細拆解和鯨社區&#xff08;heywhale&#xff09;上一個備受關注的實戰項目 ——《電商雙 11 美妝數據分析》&#xff0c;看看它能給我們帶來哪些啟發。…

uniapp 開發微信小程序,獲取經緯度并且轉化詳細地址(單獨封裝版本)

目錄1、單獨抽離封裝2、使用示例3、前置條件和配置4、效果彈框1、單獨抽離封裝 // 騰訊地圖SDK引入&#xff08;需提前下載qqmap-wx-jssdk.min.js文件&#xff09; // 注意&#xff1a;使用前需在微信公眾平臺配置request合法域名https://apis.map.qq.com var QQMapWX requir…