C++:string類

標準庫中的string

string

1. 字符串是表示字符序列的類
2. 標準的字符串類提供了對此類對象的支持,其接口類似于標準字符容器的接口,但添加了專門用于操作單字節字符字符串的設計特性。
3. string類是使用char(即作為它的字符類型,使用它的默認char_traits和分配器類型(關于模板的更多信 息,請參閱basic_string)
4. string類是basic_string模板類的一個實例,它使用char來實例化basic_string模板類,并用char_traits和allocator作為basic_string的默認參數(根于更多的模板信息請參考basic_string)
5. 注意,這個類獨立于所使用的編碼來處理字節:如果用來處理多字節或變長字符(UTF-8)的序列,這個類的所有成員(如長度或大小)以及它的迭代器,將仍然按照字節(而不是實際編碼的字符)來操作。
總結:
1. string是表示字符串的字符串類
2. 該類的接口與常規容器的接口基本相同,再添加了一些專門用來操作string的常規操作。
3. string在底層實際是:basic_string模板類的別名,typedef basic_string<char, char_traits, allocator> string;
4. 不能操作多字節或者變長字符的序列。

在使用string類時,必須包含#include<string>頭文件以及using namespace std; ?

string類的常用接口說明?

string類對象的常見構造

#include<string>
#include <iostream>
using namespace std;int main()
{string s0;string s1("hello world");string s2(s1);string s3(s1, 5, 3);string s4(s1, 5);string s5(10, '#');cout << s0 << endl;cout << s1 << endl;cout << s2 << endl;cout << s3 << endl;cout << s4 << endl;cout << s5 << endl;return 0;
}

?string類對象的容量操作

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

string類對象的訪問及遍歷操作

#include<string>
#include <iostream>
using namespace std;int main()
{string s1("hello world");// 下標+[]for (size_t i = 0; i < s1.size(); i++){cout << s1[i];//cout << s1.operator[](i);}cout << endl;//cout<<s1;return 0;
}

?operator[ ]的使用

#include<string>
#include <iostream>
using namespace std;int main()
{string s1("hello world");string::iterator it1 = s1.begin();while (it1 != s1.end()){cout << *it1;it1++;}cout << endl;return 0;
}

迭代器行為像指針一樣的類型對象

#include<string>
#include <iostream>
using namespace std;int main()
{string s1("hello world");for (auto e : s1){cout << e;}cout << endl;return 0;
}

范圍for底層就是迭代器?

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

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

相關文章

ChatGPT 是什么

文章目錄 一、ChatGPT 是什么二、ChatGPT的發明者三、ChatGPT的運作方式四、ChatGPT的技術五、ChatGPT的優勢六、ChatGPT的局限性七、ChatGPT的應用八、ChatGPT的未來九、總結 一、ChatGPT 是什么 OpenAI的ChatGPT&#xff0c;即Chat Generative Pre-Trained Transformer&…

3個精美的wordpress企業網站模板

WordPress企業網站模板 https://www.zhanyes.com/qiye/6305.html WordPress企業官網模板 https://www.zhanyes.com/qiye/6309.html WordPress律師模板 https://www.zhanyes.com/qiye/23.html

SQL注入漏洞解析--less-2

首先我們進入第二關 思路&#xff1a; 1.先判斷是什么類型的注入 2.根據類型我們在找注入點 步驟&#xff1a; 1.提示我們輸入id數字&#xff0c;那我們先輸入1猜一下 2.這里正常回顯&#xff0c;當我們后邊加上時可以看到報錯&#xff0c;且報錯信息看不到數字&#xff0…

輕松掌握opencv的8種圖像變換

文章目錄 opencv的8種圖像變換1. 圖像放大、縮小2. 圖像平移3. 圖像旋轉4. 圖像仿射變換5. 圖像裁剪6. 圖像的位運算&#xff08;AND, OR, XOR&#xff09;7. 圖像的分離和融合8. 圖像的顏色空間 opencv的8種圖像變換 1. 圖像放大、縮小 我們先看下原圖 import cv2 import ma…

C++面試:程序的編譯與運行

程序的編譯和運行是軟件開發中的基本環節&#xff0c;尤其是在使用編譯型語言&#xff08;如C/C、Java等&#xff09;進行開發時。這個過程涉及將人類可讀的源代碼轉換成機器能夠執行的指令&#xff0c;然后運行這些指令來完成既定的任務。下面是這一過程的詳細介紹&#xff0c…

基于java+springboot+vue實現的美食信息推薦系統(文末源碼+Lw)23-170

1 摘 要 使用舊方法對美食信息推薦系統的信息進行系統化管理已經不再讓人們信賴了&#xff0c;把現在的網絡信息技術運用在美食信息推薦系統的管理上面可以解決許多信息管理上面的難題&#xff0c;比如處理數據時間很長&#xff0c;數據存在錯誤不能及時糾正等問題。這次開發…

Shell好用的工具: cut

目標 使用cut可以切割提取指定列\字符\字節的數據 介紹 cut 譯為“剪切, 切割” , 是一個強大文本處理工具&#xff0c;它可以將文本按列進行劃分的文本處理。cut命令逐行讀入文本&#xff0c;然后按列劃分字段并進行提取、輸出等操作。 語法 cut [options] filename opti…

樹中枝繁葉茂:探索 B+ 樹、B 樹、二叉樹、紅黑樹和跳表的世界

歡迎來到我的博客&#xff0c;代碼的世界里&#xff0c;每一行都是一個故事 樹中枝繁葉茂&#xff1a;探索 B 樹、B 樹、二叉樹、紅黑樹和跳表的世界 前言B樹和B樹B樹&#xff08;Binary Tree&#xff09;&#xff1a;B樹&#xff08;B Plus Tree&#xff09;&#xff1a;應用場…

Cobra在ubuntu中設置自動補全

Cobra在ubuntu中設置自動補全 yourprogram指的是你程序&#xff0c;并且必須是使用了Cobra cli bash設置 $ source <(yourprogram completion bash)$ yourprogram completion bash > /etc/bash_completion.d/yourprogramzsh設置 $ echo "autoload -U compinit; …

Linux之用戶和用戶組用戶賬號系統文件

一、簡介 1.用戶的定義 在linux系統中用戶&#xff08;User&#xff09;需要用用戶賬號來訪問系統&#xff0c;服務和信息&#xff0c;系統中的每個進程&#xff08;運行的程序&#xff09;都是使用一個特定的用戶運行。每個文件都屬于一個特定的用戶所有。對文件和目錄的訪…

STM32Cubemx TB6612直流電機驅動

一、TB6612FNG TB6612是一個支持雙電機的驅動模塊&#xff0c;支持PWM調速。PWMA、AIN1、AIN2 為一組控制引腳&#xff0c;PWMA 為 PWM 速度控制引腳&#xff0c;AIN1、AIN2 為方向控制引腳&#xff1b;PWMB、BIN1、BIN2 為一組控制引腳&#xff0c;PWMB 為 PWM 速度控制引腳&…

【力扣hot100】刷題筆記Day11

前言 科研不順啊......又不想搞了&#xff0c;隨便弄弄吧&#xff0c;多花點時間刷題&#xff0c;今天開啟二叉樹&#xff01; 94. 二叉樹的中序遍歷 - 力扣&#xff08;LeetCode&#xff09; 遞歸 # 最簡單遞歸 class Solution:def inorderTraversal(self, root: TreeNode) …

idea運行項目時右下角彈出“Lombok requires enabled annotation processing”

文章目錄 錯誤描述原因分析解決方式參考 錯誤描述 Lombok requires enabled annotation processing&#xff1a;翻譯過來就是Lombok 需要啟用注釋處理 原因分析 idea安裝了Lombok插件&#xff0c;但有些設置未做。 解決方式 參考 idea配置和使用Lombok

全文搜索的工作原理講解

Elasticsearch全文搜索是一種強大的搜索技術&#xff0c;它基于Lucene構建&#xff0c;能夠處理大規模數據集&#xff0c;提供快速、準確的搜索結果。要充分利用Elasticsearch的全文搜索能力&#xff0c;關鍵在于理解和應用其核心組件&#xff1a;分詞&#xff08;Tokenization…

【FPGA】高云FPGA之數字鐘實驗->HC595驅動數碼管

高云FPGA之IP核的使用 1、設計定義2、設計輸入2.1 數碼管譯碼顯示2.2 74HC595驅動2.3 主模塊設計 3、分析和綜合4、功能仿真6.1 hex8模塊仿真6.2 HC595模塊 5、布局布線6、時序仿真7、IO分配以及配置文件&#xff08;bit流文件&#xff09;的生成8、配置&#xff08;燒錄&#…

代碼檢測規范和git提交規范

摘要&#xff1a;之前開發的項目&#xff0c;代碼檢測和提交規范都是已經配置好的&#xff0c;最近自己新建的項目就記錄下相關配置過程。 1. ESlint配置 2013年6月創建開源項目&#xff0c;提供一個插件化的JavaScript代碼檢測工具&#xff0c;創建項目是生成的eslintrc.js文…

【算法分析與設計】

&#x1f4dd;個人主頁&#xff1a;五敷有你 &#x1f525;系列專欄&#xff1a;算法分析與設計 ??穩中求進&#xff0c;曬太陽 題目 編寫一個函數&#xff0c;輸入是一個無符號整數&#xff08;以二進制串的形式&#xff09;&#xff0c;返回其二進制表達式中數字位…

如何使用Express框架構建一個簡單的Web應用

在這個數字化時代&#xff0c;Web應用的需求越來越多樣化和復雜化。在前端開發領域&#xff0c;Express框架作為一個快速、靈活的Node.js Web應用程序框架&#xff0c;擁有強大的功能和豐富的生態系統&#xff0c;深受開發者們的青睞。本篇博客將帶您一步步探索如何使用Express…

AUTOSAR汽車電子嵌入式編程精講300篇-基于深度學習的車載總線網絡入侵檢測

目錄 前言 國內外研究現狀 汽車 CAN 網絡攻擊現狀 2 汽車 CAN 總線介紹及信息安全問題分析</

MR混合現實情景實訓教學系統在高空作業課堂中的應用

高空作業是一項高風險的工作&#xff0c;對于從業者來說&#xff0c;不僅需要具備專業的技能&#xff0c;還需要有豐富的實踐經驗。然而&#xff0c;傳統的課堂教學往往只能通過理論講解和模擬訓練來傳授知識&#xff0c;無法提供真實的實踐環境。而MR混合現實情景實訓教學系統…