C++基礎知識學習記錄—string類

string實際上是C++內置的一個類,內部對char *進行了封裝,不用擔心數組越界問題,string類中,除了上課講解的函數外,還有很多函數可以使用,可以自行查閱文檔。

構造函數原型:

string(); //創建一個空的字符串 例如: string str;

string(const char* s); //使用字符串s初始化

string(const string& str); //拷貝構造函數

string(int n, char c); //使用n個字符c初始化

string(char *str,int n);//保留前n個字符組成字符串

常用函數

str.size() //取字符串的長度

str.length() //同上取字字符串的長度

str.empty() //判斷字符串是否為空

str1==str2 //判斷字符串是否相等

字符串的追加

string& operator+=(const char* str); //重載+=操作符

string& operator+=(const char c); //重載+=操作符

string& operator+=(const string& str); //重載+=操作符

string& append(const char *s); //把字符串s連接到當前字符串結尾

string& append(const char *s, int n); //把字符串s的前n個字符連接到當前字符串結尾

string& append(const string &s); //同operator+=(const string& str)

string& append(const string &s, int pos, int n);//字符串s中從pos開始的n個字符連接到字符串結尾

取字符

char& operator[](int n); //通過[]方式取字符

char& at(int n); //通過at方法獲取字符

插入

string& insert(int pos, const char* s); //插入字符串

string& insert(int pos, const string& str); //插入字符串

刪除

string& erase(int pos, int n = npos); //刪除從Pos開始的n個字符

string& substr(int pos = 0, int n = npos) const; //返回由pos開始的n個字符組成的字符串。注意接收!!

替換

string& replace(int pos, int n, const string& str); //替換從pos開始n個字符為字符串str

string& replace(int pos, int n,const char* s); //替換從pos開始的n個字符為字符串

#include<iostream>#include<string.h>using namespace std;
int main(){//復習之前講的string函數string str1 = "admin";char str2[23]="9999";cout << str1.at(0) <<endl;cout << str1[0] << endl;cout << "字符串長度0" << str1.size() << endl;cout << "字符串長度" <<str1.length() <<endl;//字符串的遍歷for(char c:str1){cout << c << endl;}cout << "*****" << endl;for(int i=0;i<str1.size();i++){cout << str1[i] << endl;}//string實際上是C++內置的一個類,內部對char *進行了封裝,不用擔數組越界問//類里面有很多方法string str3 = "welcome"; //隱式調用構造函數cout << str3 << endl;string str4("hello");//顯示調用構造函數cout << str4 << endl;// 創建一個堆內存對象string *str5 = new string("world");cout << *str5 << endl;delete str5;string str6(str4);//調用拷貝構造函數cout << str6 << endl;string str7(3,'a');//使用3個字符初始化字符串cout <<str7 <<endl;string str8("ASDFFGGG",3);//保留3個字符組成字符串cout << str8 << endl;cout << str8.empty() << endl; //判斷字符串是否為空cout << (str7 == str8)  << endl;//判斷字符串是否相等//字符串的追加string str9("qqqq");string str10("mmmmm");str9+=str10;cout << str9 << endl;str9+="hhhhhh";cout << str9 << endl;//字符追加str9+='u';cout << str9 <<endl;char *str11 = "99999";str9 += str11;cout << str9 <<endl;//字符串的拼接string str12("aaaa");str12.append("wwwww");cout << str12 <<endl;//將字符串的前n個字符拼接到目標字符串的結尾//參數1 從哪個字符串 里選取字符進行拼接//參數2  選取前幾個字符str12.append("werttyu",3);cout << str12 << endl;//將字符串的s中從某個字符開始的n個字符拼接到目標字符串的結尾//參數1 從那個字符串里選取字符進行拼接//參數2  從哪開始//參數3  拼接幾個字符str12.append("mnbvc",1,3);cout << str12 << endl;//插入//參數1  從哪開始插//參數2  插入什么string str13="asdf";str13.insert(2,"nnn");  //在指定位置插入字符串cout << str13 << endl;//asnnndf//刪除(截取)//參數1  從哪開始刪除(截取)//參數2  刪除(截取)幾個字符string str14="asdfg";cout << str14.erase(2,3) << endl;//"as"string str15="nhytgbvfr";cout << str15.substr(2,4) << endl;//"ytgb"//替換//參數1  從哪開始替換//參數2  替換幾個字符//參數3  替換為什么string str16="mnbvc";cout << str16.replace(0,3,"kkk") << endl; //"kkkvc"return 0;
}

?通過string復習運算符重載

#include <iostream>
#include <cstring>
using namespace std;class String{
private:string str;
public:String(const string &s); //構造函數//友元運算符重載friend String operator +(const String &s1,const String &s2);friend bool operator >(const String &s1,const String &s2);friend bool operator <(const String &s1,const String &s2);friend bool operator ==(const String &s1,const String &s2);//成員函數運算符bool operator !=(const String &other);//賦值運算符String& operator =(const String &s);// 類型轉換operator string(); //String轉string//成員函數string get_str() const;
};//構造函數
String::String(const string &s)
{str = s;
}//類型轉換
String::operator string()
{return str;
}//訪問屬性str
string String::get_str() const
{return str;
}///字符串賦值
String& String::operator =(const String &s)
{str=s.str;return *this;
}//字符串長度判等
bool String::operator !=(const String &other)
{return str.size() != other.str.size();
}//字符串拼接
String operator +(const String &s1,const String &s2)
{return s1.str+s2.str;
}
//字符串長度 >
bool operator >(const String &s1,const String &s2)
{return s1.str.size()>s2.str.size();
}
//字符串長度 <
bool operator <(const String &s1,const String &s2)
{return s1.str.size()<s2.str.size();
}//字符串長度 ==
bool operator ==(const String &s1,const String &s2)
{return s1.str.size()==s2.str.size();
}
int main()
{String s1("qwe");String s2("qwe");String s3("QWE");String s4("1234");String s5("12");String s6("5678");String s7("34");if(s1>s2)cout<<"正確"<<endl;elsecout<<"錯誤"<<endl;if(s1>s3)cout<<"正確"<<endl;elsecout<<"錯誤"<<endl;if(s1>s4)cout<<"正確"<<endl;elsecout<<"錯誤"<<endl;cout<<(s2+s3).get_str()<<endl;s2=s3;cout<<s2.get_str()<<" "<<s3.get_str();return 0;
}

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

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

相關文章

Ollama+DeepSeek+Open-WebUi

環境準備 Docker Ollama Open-WebUi Ollama 下載地址&#xff1a;Ollama docker安裝ollama docker run -d \ -v /data/ollama/data:/root/.ollama \ -p 11434:11434 \ --name ollama ollama/ollama 下載模型 Ollama模型倉庫 # 示例&#xff1a;安裝deepseek-r1:7b doc…

設計模式--訪問者模式【行為型模式】

設計模式的分類 我們都知道有 23 種設計模式&#xff0c;這 23 種設計模式可分為如下三類&#xff1a; 創建型模式&#xff08;5 種&#xff09;&#xff1a;單例模式、工廠方法模式、抽象工廠模式、建造者模式、原型模式。結構型模式&#xff08;7 種&#xff09;&#xff1…

前端循環全解析:JS/ES/TS 循環寫法與實戰示例

循環是編程中控制流程的核心工具。本文將詳細介紹 JavaScript、ES6 及 TypeScript 中各種循環的寫法、特性&#xff0c;并通過實際示例幫助你掌握它們的正確使用姿勢。 目錄 傳統三劍客 for 循環 while 循環 do...while 循環 ES6 新特性 forEach for...of for...in 數組…

數據中心儲能蓄電池狀態監測管理系統 組成架構介紹

安科瑞劉鴻鵬 摘要 隨著數據中心對供電可靠性要求的提高&#xff0c;蓄電池儲能系統成為關鍵的后備電源。本文探討了蓄電池監測系統在數據中心儲能系統中的重要性&#xff0c;分析了ABAT系列蓄電池在線監測系統的功能、技術特點及其應用優勢。通過蓄電池監測系統的實施&#…

Mac端homebrew安裝配置

拷打了一下午o3-mini-high&#xff0c;不如這位博主的超強帖子&#xff0c;10分鐘結束戰斗 跟隨該文章即可&#xff0c;2025/2/19親測可行 mac 安裝HomeBrew(100%成功)_mac安裝homebrew-CSDN博客文章瀏覽閱讀10w次&#xff0c;點贊258次&#xff0c;收藏837次。一直覺得自己寫…

機器學習實戰(8):降維技術——主成分分析(PCA)

第8集&#xff1a;降維技術——主成分分析&#xff08;PCA&#xff09; 在機器學習中&#xff0c;降維&#xff08;Dimensionality Reduction&#xff09; 是一種重要的數據處理技術&#xff0c;用于減少特征維度、去除噪聲并提高模型效率。主成分分析&#xff08;Principal C…

windows環境下用docker搭建php開發環境dnmp

安裝WSL WSL即Linux子系統&#xff0c;比虛擬機占用資源少&#xff0c;安裝的前提是系統必須是win10以上。 WSL的安裝比較簡單&#xff0c;網上有很多教程&#xff0c;例如&#xff1a;WSL簡介與安裝流程&#xff08;Windows 下的 Linux 子系統&#xff09;_wsl安裝-CSDN博客&…

Python網絡爬蟲技術詳解文檔

Python網絡爬蟲技術詳解文檔 目錄 網絡爬蟲概述爬蟲核心技術解析常用Python爬蟲庫實戰案例演示反爬蟲機制與應對策略爬蟲法律與道德規范高級爬蟲技術資源推薦與學習路徑1. 網絡爬蟲概述 1.1 什么是網絡爬蟲 網絡爬蟲(Web Crawler)是一種按特定規則自動抓取互聯網信息的程序…

位運算,雙指針,二分,排序算法

文章目錄 位運算二進制中1的個數題解代碼我們需要0題解代碼 排序模版排序1題解代碼模版排序2題解代碼模版排序3題解代碼 雙指針最長連續不重復子序列題解代碼 二分查找題解代碼 位運算 1. bitset< 16 >將十進制數轉為16位的二進制數 int x 25; cout << bitset<…

一周學會Flask3 Python Web開發-redirect重定向

鋒哥原創的Flask3 Python Web開發 Flask3視頻教程&#xff1a; 2025版 Flask3 Python web開發 視頻教程(無廢話版) 玩命更新中~_嗶哩嗶哩_bilibili 前面我們學過渲染到模板頁面&#xff0c;這個其實是一種內部的轉發&#xff0c;瀏覽器地址欄地址沒有變化。如果我們想重定向…

圖片粘貼上傳實現

圖片上傳 html demo 直接粘貼本地運行查看效果即可&#xff0c;有看不懂的直接喂給 deepseek 會解釋的很清晰 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"…

RedisTemplate存儲含有特殊字符解決

ERROR信息: 案發時間: 2025-02-18 01:01 案發現場: UserServiceImpl.java 嫌疑人: stringRedisTemplate.opsForValue().set(SystemConstants.LOGIN_CODE_PREFIX phone, code, Duration.ofMinutes(3L)); // 3分鐘過期作案動機: stringRedisTemplate繼承了Redistemplate 使用的…

Python正則表達式學習

Python正則表達式全攻略 一、正則表達式基礎 1. 什么是正則表達式&#xff1f; 用于描述字符串匹配規則的表達式廣泛應用于文本處理、表單驗證、數據清洗等領域 2. Python中的re模塊 import re3. 基礎語法 字符說明示例.匹配任意字符(除換行)a.c → abc\d數字 [0-9]\d\d …

20250218 隨筆 垂直分庫分表(Vertical Sharding) 和 水平分庫分表(Horizontal Sharding)

垂直分庫分表&#xff08;Vertical Sharding&#xff09; 和 水平分庫分表&#xff08;Horizontal Sharding&#xff09; 是數據庫拆分的兩種策略。它們在大規模數據庫優化、分布式架構設計中至關重要&#xff0c;主要用于 降低單庫壓力、提高查詢效率、支持高并發。 1. 垂直分…

notepad++右鍵菜單不見了

卸載時沒點擊完成&#xff0c;又重新安裝了一個&#xff0c;最終導致了一些bug&#xff0c;導致右鍵沒有notepad菜單。 解決方式&#xff1a; 新建一個register.reg文件&#xff0c;加入以下代碼&#xff0c;然后雙擊執行即可 代碼說明&#xff1a;Open with Notepad 是右…

重定向與文件緩沖機制

目錄 一、重定向的原理與實踐 1. 輸出重定向&#xff1a;讓數據流向新目的地 2. 追加重定向&#xff1a;在文件末尾追加數據 3. 輸入重定向&#xff1a;從指定文件讀取數據 4. 標準輸出流與標準錯誤流的區別 5. 使用 dup2 實現重定向 二、FILE 結構體的奧秘 1. FILE 中的…

DeepSeek 沖擊(含本地化部署實踐)

DeepSeek無疑是春節檔最火爆的話題&#xff0c;上線不足一月&#xff0c;其全球累計下載量已達4000萬&#xff0c;反超ChatGPT成為全球增長最快的AI應用&#xff0c;并且完全開源。那么究竟DeepSeek有什么魔力&#xff0c;能夠讓大家趨之若鶩&#xff0c;他又將怎樣改變世界AI格…

顯微鏡下的人體結構

顯微鏡下的人體結構&#xff0c;看完以后&#xff0c;你還覺得人類是進化而來的嗎&#xff1f;...... 第一張&#xff1a;電子顯微鏡所觀察到的人類血管&#xff0c;可以非常清楚的看到里面的白細胞和紅細胞 第二張&#xff1a;正在分泌耳垢&#xff08;耳屎&#xff09;的耳道…

DApp 開發入門指南

DApp 開發入門指南 &#x1f528; 1. DApp 基礎概念 1.1 什么是 DApp&#xff1f; 去中心化應用&#xff08;DApp&#xff09;是基于區塊鏈的應用程序&#xff0c;特點是&#xff1a; 后端運行在區塊鏈網絡前端可以是任何框架使用智能合約處理業務邏輯數據存儲在區塊鏈上 1…

鴻蒙狀態管理概述 v2

狀態管理v2 概述狀態管理之v2ObservedV2 和 Trace狀態管理V1版本對嵌套類對象屬性變化直接觀測的局限性ObservedV2 和 Trace 使用場景 Local狀態管理V1版本State裝飾器的局限性 Param狀態管理V1版本接受外部傳入的裝飾器的局限性 OnceEventComputedComputed 使用場景 TypePersi…