C++第十七彈---string使用(下)

?個人主頁:?熬夜學編程的小林

💗系列專欄:?【C語言詳解】?【數據結構詳解】【C++詳解】

目錄

1、標準庫中的string類

1.1、string類的常用接口說明

?1.1.1、string類對象的修改操作?

?1.1.2、string類對象非成員函數重載

總結


1、標準庫中的string類

1.1、string類的常用接口說明

?1.1.1、string類對象的修改操作?

?? ?1、 push_back(char c) //尾插一個字符
?? ?2、 string& append(const string & str);//在字符串尾追加一個string類字符串
?? ?3、 string& append(const char* s);//在字符串尾追加一個常量字符串
?? ?4、 string& operator+= (const string & str);//在字符串尾追加一個string類字符串
?? ?5、 string& operator+= (const char* s);//在字符串尾追加一個常量字符串
?? ?6、 string& assign(const string & str);//把原來string類字符串替換成str類
?? ?7、 string& assign(const char* s);//把原來string類字符串替換成常量字符串
?? ?8、 string& insert(size_t pos, const string & str);//在pos位置插入類字符串
?? ?9、 string& insert(size_t pos, const char* s);//在pos位置插入常量字符串
?? ?10、string& erase (size_t pos = 0, size_t len = npos);//從pos位置刪除len長度個字符,超過類大小則刪除所有有效字符
?? ?11、string& replace (size_t pos, ?size_t len, ?const string& str);//將原類的pos位置向后len個長度替換成str類
?? ?12、string& replace (size_t pos, ?size_t len, ?const char* s);//將原類的pos位置向后len個長度替換成常量字符串
?? ?13、void swap(string & str);//將原類與str類交換數據
?? ?14、void pop_back();//尾刪一個字符

注意:關于字符串修改的重載函數實在太多了,因此只舉例了常見的函數進行使用。

int main()
{string s1;string s2("hello");s1.push_back('a');//在s1尾部插入字符as1.push_back('b');//在s1尾部插入字符bs1.push_back('c');//在s1尾部插入字符ccout << s1 << endl;//打印s1s1.append(s2);//在s1尾部追加string類s2cout << s1 << endl;s1.append("world");//在s1尾部追加world字符串cout << s1 << endl;s1 += s2;//在s1尾部追加string類s2cout << s1 << endl;s1 += "world";//在s1尾部追加world字符串cout << s1 << endl;s1.assign(s2);//將s1原來的字符替換成s2cout << s1 << endl;s1.assign("world");//將s1原來的字符替換成worldcout << s1 << endl;s1.insert(2, s2);//在2的位置插入string類s2cout << s1 << endl;s1.insert(3, "world");//在3的位置插入字符串worldcout << s1 << endl;s1.erase(2, 3);//從2的位置刪除3個字符cout << s1 << endl;s1.replace(0, 4, s2);//從0的位置開始把4個位置替換成s2cout << s1 << endl;s1.replace(2, 3, "world");//從2的位置開始把3個位置替換worldcout << s1 << endl;cout << s2 << endl;s1.swap(s2);//將s1與s2數據交換cout << s1 << endl;cout << s2 << endl;s1.pop_back();//尾刪一個字符cout << s1 << endl;return 0;
}

1.1.1、string類對象的字符串操作?

? ? 1、 const char* c_str() const;//獲取C格式常量字符串
?? ?2、 size_t find (const string& str, size_t pos = 0) const;//從pos位置開始從前往后找與str相等的字符串,相等則返回該串第一個元素下標,否則返回npos
?? ?3、 size_t find(const char* s, size_t pos = 0) const;//從pos位置開始從前往后找與s相等的字符串,相等則返回該串第一個元素下標,否則返回npos
?? ?4、 size_t rfind (const string& str, size_t pos = npos) const;//從pos位置開始從后往前找與str相等的字符串,相等則返回該串第一個元素下標,否則返回npos
?? ?5、 size_t rfind(const char* s, size_t pos = npos) const;//從pos位置開始從后往前找與s相等的字符串,相等則返回該串第一個元素下標,否則返回npos
?? ?6、 size_t find_first_of(const string & str, size_t pos = 0) const;//從pos位置開始從前往后找與str其中一個字符相等的元素,找到則返回此元素下標,否則返回npos
?? ?7、 size_t find_first_of(const char* s, size_t pos = 0) const;//從pos位置開始從前往后找與s其中一個字符相等的元素,找到則返回此元素元素下標,否則返回npos
?? ?8、 size_t find_last_of(const string & str, size_t pos = npos) const;//從pos位置開始從后往前找與str其中一個字符相等的元素,找到則返回此元素下標,否則返回npos
?? ?9、 size_t find_last_of(const char* s, size_t pos = npos) const;//從pos位置開始從后往前找與s其中一個字符相等的元素,找到則返回此元素下標,否則返回npos
?? ?10、size_t find_first_not_of (const string& str, size_t pos = 0) const;//從pos位置開始從前往后找與str中字符都不相等的元素,找到則返回此元素下標,否則返回npos
?? ?11、size_t find_first_not_of(const char* s, size_t pos = 0) const;//從pos位置開始從前往后找與s中字符都不相等的元素,找到則返回此元素下標,否則返回npos
?? ?12、size_t find_last_not_of (const string& str, size_t pos = npos) const;//從pos位置開始從后往前找與str中字符都不相等的元素,找到則返回此元素下標,否則返回npos
?? ?13、size_t find_last_not_of(const char* s, size_t pos = npos) const;//從pos位置開始從后往前找與s中字符都不相等的元素,找到則返回此元素下標,否則返回npos
?? ?14、string substr (size_t pos = 0, size_t len = npos) const;//從pos位置截取len長度的子串

int main()
{string s("hello world");const char* str = s.c_str();//將C格式字符串賦值給strcout << str << endl;//打印str字符串string s1(":");string s2;const char* str1 = ":";string url("https://cplusplus.com/reference/string/string/");size_t pos1 = url.find(s1, 0);//從0位置開始從前往后找與s1相等的字符串cout << pos1 << endl;s2 = url.substr(0, pos1);//從0位置截取pos1長度的子串cout << s2 << endl;//打印上面子串size_t pos2 = url.find(str1, 0);//從0位置開始從前往后找與str1相等的字符串cout << pos2 << endl;s2 = url.substr(0, pos2);//從0位置截取pos2長度的子串cout << s2 << endl;//打印上面子串string s3 = "code.c.dir.exe";size_t pos3 = s3.rfind(".");//從npos位置開始從后往前找與.相等的字符cout << pos3 << endl;s2 = s3.substr(pos3);//從pos位置截取字符串cout << s2 << endl;//打印上面子串string s4 = "abcdef";cout << s4 << endl;//打印初始s4//將aeiou的字符均填充成*size_t pos4 = s4.find_first_of("aeiou", 0);//從0位置開始從前往后找與"aeiou"其中一個字符相等的元素while (pos4 != string::npos){s4[pos4] = '*';pos4 = s4.find_first_of("aeiou", pos4 + 1);}cout << s4 << endl;//打印填充后的s4return 0;
}

上述代碼輸出結果:?

注意:標準庫中的npos源代碼為:static const size_t npos = -1;

?1.1.2、string類對象非成員函數重載

?? ?1、string operator+ (const string& lhs, const string& rhs);//在lhs尾部追加rhs字符串
?? ?2、string operator+ (const char* ? lhs, const string& rhs);//在rhs尾部追加lhs字符串
? ? 3、bool operator== (const string& lhs, const string& rhs);//比較lhs與rhs字符串,逐個字符比較
?? ?4、bool operator== (const char* ? lhs, const string& rhs);//比較lhs與rhs字符串,逐個字符比較
?? ?5、void swap (string& x, string& y);//將x字符串與y字符串交換,此處思想為交換指針
?? ?6、istream& operator>> (istream& is, string& str);//輸入運算符重載
?? ?7、ostream& operator<< (ostream& os, const string& str);//輸出運算符重載
?? ?8、istream& getline(istream & is, string & str);//獲取一行字符串

int main()
{string s1("hello");const char* str = "world";string s2;s2 = s1 + str;//類字符串+C常量字符串,傳值返回盡量少用cout << s2 << endl;//輸出運算符重載s2 = str + s1;//C常量字符串+類字符串cout << s2 << endl;string s3 = "hello";const char* str3 = "hello";cout << (s3 == str3) << endl;//左邊類字符串 右邊C格式字符串cout << (str3 == s3) << endl;cout << (s3 < str3) << endl;string s4 = "world";cout << s3 << endl;cout << s4 << endl;swap(s3, s4);//交換s3與s4,C++標準庫有swap函數,此處還有不會出錯?根據模板的規則,有現成的用現成的,因此沒問題。string s5;//cin >> s5;//輸入字符串給s5//cout << s5 << endl;getline(cin, s5);//獲取一行字符串cout << s5 << endl;return 0;
}

?

總結


本篇博客就結束啦,謝謝大家的觀看,如果公主少年們有好的建議可以留言喔,謝謝大家啦!

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

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

相關文章

牛客熱題:有效括號

&#x1f4df;作者主頁&#xff1a;慢熱的陜西人 &#x1f334;專欄鏈接&#xff1a;力扣刷題日記 &#x1f4e3;歡迎各位大佬&#x1f44d;點贊&#x1f525;關注&#x1f693;收藏&#xff0c;&#x1f349;留言 文章目錄 牛客熱題&#xff1a;有效括號題目鏈接方法一&#x…

MySQL視圖教程(01):創建視圖

MySQL 創建視圖 在 MySQL 中&#xff0c; CREATE VIEW 語句用于創建一個數據庫視圖&#xff08;View&#xff09;。 MySQL 是一種常用的關系型數據庫管理系統&#xff0c;提供了 CREATE VIEW 語法&#xff0c;用于創建視圖&#xff08;View&#xff09;。視圖是一種虛擬的表&…

Mycat+Mysql搭建數據集群實現數據分片存儲

前言 MyCAT介紹 * 一個徹底開源的,面向企業應用開發的“大數據庫集群”; * 支持事務、ACID、可以替代MySQL的加強版數據庫; * 一個可以視為“MySQL”集群的企業級數據庫,用來替代昂貴的Oracle集群; * 一個融合內存緩存技術、Nosql技術、HDFS大數據的新型SQL; * 一個新穎…

QCC---DFU升級變更設備名和地址

QCC---DFU升級變更設備名和地址 這個很多人碰到這個疑問,升級了改不了設備名和地址 /******************************************************************************* Copyright (c) 2018 Qualcomm Technologies International, Ltd. FILE NAME sink_dfu_ps.c DESCRIPT…

2024.5.1學習記錄

1、代碼隨想錄&#xff1a;貪心刷題 2、react 高級使用( hoc render、props、函數組件、serState 傳送門等) 3、游山玩水

《拯救大學生課設不掛科第四期之藍橋杯是什么?我是否要參加藍橋杯?選擇何種語言?如何科學備賽?方法思維教程》【官方筆記】

背景&#xff1a; 有些同學在大一或者大二可能會被老師建議參加藍橋杯&#xff0c;本視頻和文章主要是以一個過來人的身份來給與大家一些思路。 比如藍橋杯是什么&#xff1f;我是否要參加藍橋杯&#xff1f;參加藍橋杯該選擇何種語言&#xff1f;如何科學備賽&#xff1f;等…

2023年信息素養大賽小學組C++智能算法復賽試題解析

2023年信息素養大賽小學組C++智能算法復賽真題 智能算法挑戰復賽小學組(總共4道題)T1. 判斷數字出現了幾次 【題目描述】 給定一個正整數 n,判斷從 1 到這個數本身的所有數中,一共出現了多少次數字k。 【輸入格式】 輸入共1行,包括一個正整數n和一個正整數k。(0<n<…

JavaEE之線程(7)_單例模式(設計模式概念、單例模式優點、懶漢、餓漢模式)

一、什么是設計模式&#xff1f; 單例模式是設計模式中較為常見的一種。那么&#xff0c;什么是單例模式&#xff1f; 設計模式&#xff08;Design Pattern&#xff09;都是一些相對優秀的解決方案&#xff0c;很多問題都是典型的、有代表性的問題&#xff0c;學習設計模式&am…

C#面:如果出現ASP.NET中的事件不能觸發可能由于什么原因造成

當 ASP.NET 中的事件不能觸發時&#xff0c;可能由以下幾個原因造成&#xff1a; 事件綁定錯誤&#xff1a;請確保事件正確地綁定到相應的控件上。在 ASP.NET 中&#xff0c;可以通過在前端代碼或者后端代碼中使用事件處理程序來綁定事件。如果事件沒有正確地綁定到控件上&…

為什么本科畢業后我堅定地選擇了就業而不是考研?

大家好&#xff0c;我是小布丁。今天來聊聊我為什么本科畢業后選擇了就業而不是考研。 在整個大學期間&#xff0c;我被親戚拷問最多的問題就是&#xff1a;準備考研嗎&#xff1f;相信很多大學生都遇到過這種情況吧。 如果你說準備還好&#xff0c;親戚大概率就不會問下去&a…

js計算字符串大小存儲所占字節數

在JavaScript中&#xff0c;計算字符串所占的大小&#xff08;占用的字節數&#xff09;并不直接&#xff0c;但可以通過一些方法間接得到。 我們需要知道一個前提&#xff0c;英文字母 lenght 和字節數是一樣的&#xff1a;都是1&#xff0c;而中文 lenght1&#xff0c;字節數…

golang sqlite主從數據同步插件開發

### golang sqlite主從數據同步插件開發思路 參考Mysql的主從同步機制&#xff0c;Mysql是產生binlog&#xff0c;然后把binlog日志同步到從服務上。 同理&#xff0c;我們按sql執行順序記錄所有的增刪改查的sql語句&#xff0c;然后調用接口把sql語句傳到從服務上執行。 數…

關于軟件設計模式的理解

系列文章 關于時間復雜度o(1), o(n), o(logn), o(nlogn)的理解 關于HashMap的哈希碰撞、拉鏈法和key的哈希函數設計 關于JVM內存模型和堆內存模型的理解 關于代理模式的理解 關于Mysql基本概念的理解 關于軟件設計模式的理解 文章目錄 前言一、軟件設計模式遵循的六大原則…

前端面試題日常練-day35 【面試題】

題目 希望這些選擇題能夠幫助您進行前端面試的準備&#xff0c;答案在文末。 1. 以下哪個是使用jQuery選擇所有具有CSS類名"myClass"的元素的正確語法&#xff1f; a) $(".myClass") b) $("myClass") c) $("#myClass") d) $("…

FURNet問題

1. 為什么選擇使用弱監督學習&#xff1f; 弱監督學習減少了對精確標注數據的依賴&#xff0c;這在醫學圖像處理中尤為重要&#xff0c;因為高質量標注數據通常需要大量專業知識和時間。弱監督學習通過利用少量標注數據或粗略標注數據來訓練模型&#xff0c;降低了數據準備的成…

元組推導式

自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 使用元組推導式可以快速生成一個元組&#xff0c;它的表現形式和列表推導式類似&#xff0c;只是將列表推導式中的“[]”修改為“()”。例如&#xf…

python深入解析字符串操作的八大神技

新書上架~&#x1f447;全國包郵奧~ python實用小工具開發教程http://pythontoolsteach.com/3 歡迎關注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目錄 一、字符串的長度與切片 示例代碼 二、去除多余的空格 示例代碼 三、字符串的開頭與包含…

元組的創建和刪除

目錄 使用賦值運算符直接創建元組 創建空元組 創建數值元組 刪除元組 自學python如何成為大佬(目錄):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 元組&#xff08;tuple&#xff09;是Python中另一個重要的序列結構&#…

JavaScript 獲取 HTML 中特定父元素下的子元素

JavaScript 獲取 HTML 中特定父元素下的子元素 <!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <title>查找子元素示例</title> </head> <body><div id"parent"><p&…

CTF-web-攻防世界-2

1、newscenter (1)、訪問網站&#xff0c;一個搜索欄&#xff0c;像是SQL注入漏洞&#xff0c;brup抓包嘗試一下。 輸入2/0、一個單引號、兩個單引號、一個雙引號、兩個雙引號等。發現只有一個單引號時&#xff0c;響應包content-length字段有非常明顯的變化為0。說明有可能是…