【C++复习总结回顾】—— 【一】基础知识+字符串/string类
文章目錄
- 一、面向對象/過程
- 1. 面向過程過程
- 2. 面向對象編程
- 二、C++語言基礎
- 1. 信息的存儲單位
- 2. 命名空間
- 3. 基本數據類型 + 字符串
- C++的基本數據類型
- 字符串處理
- 4. string 類詳解
- 4.1 string類的初始化
- 4.2 string 的賦值和連接
- 賦值
- 連接
- 4.3 常用方法
- 長度 length() / size()
- 子串 substr()
- 尋找字符 find()
- 消除 erase()
- 替換 replace()
- 插入 insert()
- 轉換成C語言形式char*字符串 c_str()
- 5. 運算
- 逗號運算
- 邏輯運算
- 位運算
- sizeof 運算
- 6. 類型轉換
- 隱含類型轉換
- 顯示類型轉換
- 三、算法的基本控制結構
- 四、enum 枚舉類型
一、面向對象/過程
1. 面向過程過程
優點:
有效地將一個較復雜的程序系統設計任務分解成許多易于控制和處理的子任務,便于開發和維護
缺點:
- 可重用性差、數據安全性差、難以開發圖形界面的應用
- 把數據和處理數據的過程分離為相互獨立的實體。
- 當數據結構改變時,所有相關的處理過程都要進行相應的修改。
- 每一種相對于老問題的新方法都要帶來額外的開銷。
- 圖形用戶界面的應用,很難用過程來描述和實現,開發和維護都很困難。
2. 面向對象編程
面向對象的基本概念
- 對象
- 抽象與分類
- 封裝
- 繼承
- 多態
優點:
- 程序模塊間的關系更為簡單,程序模塊的獨立性、數據的安全性就有了良好的保障。
- 通過繼承與多態性,可以大大提高程序的可重用性,使得軟件的開發和維護都更為方便。
二、C++語言基礎
1. 信息的存儲單位
2. 命名空間
若沒有using namespace std 則: cout << 改為 std :: cout <<
3. 基本數據類型 + 字符串
C++的基本數據類型
- bool
- char(字符類型)
- int
- float
- double
注: 基本數據類型中沒有字符串類型(string)
一對 “ ” 括起來的字符序列表示 字符串(在末尾添加’\0’作為結尾標記),
‘ ' 括起來的表示 單個字符
字符串處理
C++基本數據類型中沒有字符串變量,存儲和處理方法有兩種如下:
用字符數組來存放字符串;(C風格字符串)
標準C++庫預定義 string 類
4. string 類詳解
string類是一個模板類,它的定義如下:
typedef basic_string<char> string
4.1 string類的初始化
? string s1("Hello"); //一個參數的構造函數,用Hello初始化
? sting s2(5,'x'); //兩個參數的構造函數,5代表x出現的次數
? string month = "March";
不提供以字符和整數為參數的構造函數
- string error1 = 'c'; //error
- string error2 = ('u'); //error
- string error3 = 22; //error
- string error4(8); //error
可以將字符賦值給string對象
string s; s = 'n';4.2 string 的賦值和連接
賦值
- 用 = 賦值
- 用 assign 成員函數復制
- 用assign成員函數部分復制
- 單個字符復制
- 使用 at 成員函數逐個訪問 string 對象中的字符
注:成員函數at會做下標范圍檢查,若果超出范圍會拋出out_of_range異常,而下標運算符不做范圍檢查
連接
- 用 + 連接字符串
- 用成員函數 append 連接
4.3 常用方法
長度 length() / size()
構造的string太長無法表達 -> 會拋出 length error 異常
s.length() / s.size()
子串 substr()
成員函數 substr()
s2 = s1.substr(3,2); //下標3開始2個字符尋找字符 find()
- 成員函數 find()
-
成員函數 find_first_of()
查找字符第一次出現的下標 -
成員函數 find_last_of()
查找字符最后一次出現的地方
消除 erase()
s1.erase(3); //返回 消除下標3及以后的字符串替換 replace()
s1.replace(2,3,"hala",1,2); //將s1中下標從2開始的3個字符 替換成 "hala"中從下標1開始的2個字符插入 insert()
s1.insert(4,s2); //將s2插入s1下標為4的位置 s1. insert(2,s2,5,3) //將s2中下標5開始的3個字符插入s1下標為2的位置轉換成C語言形式char*字符串 c_str()
s1.c_str(); //返回傳統的const char*類型字符串 //且該字符串以'\0'結尾5. 運算
此處就不詳細解釋了,就挑出了一些容易混淆的地方
當 / 用于兩個整型數據相除時,其結果取商的整數部分,小數部分被自動舍棄。
int a = 1/2 ----> a = 0;
逗號運算
a=3*5, a*4;
---->結果為第二個表達式的值60
邏輯運算
&& 和 || 具有短路特性。
-
對于&&,如果第一個表達式為false,則不再對第二個表達式求值;
(因為無論第二個表達式為多少最后結果都為false) -
對于||,如果第一個表達式為true,則不再對第二個表達式求值;
(a==b) || (++c == 1) 這個表達式中c的自增只有在a!=b的時候才會執行
位運算
sizeof 運算
6. 類型轉換
隱含類型轉換
賦值運算要求左值與右值的類型相同,若類型不同,編譯系統會自動將右值轉換為左值的類型。
ex:
顯示類型轉換
float z;
強制類型轉換int(z)只是將float類型變量z臨時取出來轉換為int型,
這時變量z所在的內存單元中的值并未真正改變。
三、算法的基本控制結構
- if語句 (選擇結構)
- switch語句(選擇結構)
- while語句(循環結構)
- do while語句(循環結構)
- for語句(循環結構)
- 其他控制語句
四、enum 枚舉類型
語法形式: enum 枚舉類型名 {變量值列表};
例:enum Weekday {SUN, MON, TUE, WED, THU, FRI, SAT};
默認情況下 SUN=0,MON=1,TUE=2,…,SAT=6
ex: 口袋中有紅、黃、藍、白、黑五種顏色的球若干個。每次從口袋中取出3個不同顏色的球,問有多少種取法。
分析: 由于球只能是五種顏色之一,故可用枚舉類型表示球的顏色。
設取出的球為 i、j、k,根據題意,i、j、k分別可以有五種取值,且i≠j≠k。
可以用窮舉法,逐個檢驗每一種可能的組合,從中找出符合要求的組合并輸出。
👉 👉 👉 原文首發 - 小牛肉的個人博客,歡迎來訪~👈 👈 👈
總結
以上是生活随笔為你收集整理的【C++复习总结回顾】—— 【一】基础知识+字符串/string类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子商务系统的规划
- 下一篇: 一般人不清楚的JavaScript概念