第八章 字串和向量

2021-08-27 10:54:28 字數 3020 閱讀 9260

c++常用的是char型

『\0』字元被稱為空字元,作為結束標記使用,當程式從陣列裡讀取到』\0』時,就知道要停止讀取了,以』\0』為終止的字串被稱為c字串

c字串本質上是字元陣列,儲存的資料要比宣告的少一,因為最後一位要放』\0』

c字串宣告時可以初始化,而且不需要填滿它

c字串宣告時可以省略陣列長度,但是有一點和正常的不一樣

char a = ;
此時的陣列長度為4,因為最後有』\0』

注意另一種宣告方式

char a[4] = ;
這兩者是等價的

注意不能這麼宣告

char a[4] = ;
這樣會系統會提示陣列下標越界,因為沒流出空間給』\0』

如果想要定義三個不要』\0』,可以這麼定義

char a = ;
srrncpy,strncat,strncmp這三個函式是c++< cstring >提供的三個安全版本的函式

這三個函式都有三個引數

//以下操作將字串"vcxz"的前兩個賦給了a,a最後變成了"vcd"

char a[4] = ;

strncpy(a,"vcxz",2);

//以下操作將在a字串後面新增乙個'x'

char a[40] = ;

strncat(a,"x",1);

//判斷a和字串"asd"的第一位是否相同,相同返回0

//不同話,a大返回正值,a小返回負值

char a[40] = ;

int b = strncmp(a,"asd",1);

char a[100];

char b[100];

cout

<

>a>>b;

cout

輸入如下

輸出:

只讀取了前面兩個字元,因為cin讀取時遇到空格自動結束

如果想要讀取整行,需要用到getline函式,用法如下

char a[100];

cout

<

cout

這樣就能讀取一行了

如果把函式最後乙個引數換成2,輸出是

只讀取了乙個a,因為第二個要放』\0』

atoi,atol,atof

這三個函式都是將c字串轉化為對應的數值

atoi對應int

atol對應long

atof對應double

string類需要加入預編譯頭#include < string>

操作符=可以為string變數賦值

string str;

str = "a"+"asd"+"weg";

這是合法的

string a = "asd";

string a("asd");

這兩者初始化是等價的

cin用法與char一致

getline略有差別,這裡的getline不是成員函式,所以用法如下

string a

;getline(cin,a);

這裡的getline在string庫里定義的,cin也可以換成檔案連線的流物件

string類處除了char類行的處理外,還支援更多其他型別的操作

能夠當陣列使用,比如

string a = "asfasf"

;cout<

但是使用不會認為是非法的,可能出現有問題但是不報錯的情況,比如超出陣列長度之類的

所以推薦使用at函式,使用如下

string a = "asfasf"

;cout<

char a1 = "asdfasf";

string a2;

a2 = a1;

這是合法的

但是,以下不合法

a1 =a2;
將string物件轉換成對應的c字串要用到c_str函式

string a

;a.c_str();

向量類似陣列,但還是有很多差別

向量的宣告,如

vector

v;

這是定義了乙個名為v,型別是int的向量

和陣列一樣,向量的編號也是從0開始的,向量也可以使用,但是這個只能賦值,不能初始化

向量的初始化需要使用push_back函式或者用類似陣列的初始化,如下

vector

a;a.push_back(0);

a.push_back(1);

//或者這樣

vector

a = ;

向量元素個數稱為向量的長度

成員函式size()判斷向量有多少個元素,該函式只會返回unsigned int型別,該型別沒有負數

向量在任何時候都有乙個容量,即當前分配了記憶體的元素個數

容量一定大於等於長度

第八章 指標 第八章 指標

1 什麼是位址 include using namespace std int main 11 在堆中建立對像 我們既然可以在堆中儲存變數,那麼也就可以儲存對像,我們可以將對像儲存堆中,然後通過指標來訪問它 include using namespace std class human 14 在建構...

第八章 操作字元

python中提供了幫助系統,可以通過如下指令來呼叫 字串的幫助系統 help str 列表的幫助系統 help list 方法 行為string.isupper 當且僅當字串含有至少乙個字母且所有字母為大寫時返回true string.islower 當且僅當字串含有至少乙個字母且所有字母為小寫時...

第八章(筆記)

能在 中進行記憶體單元的定址的暫存器只有4個,分別是bx si di bp 其中bx bp 是基址,bx對應的段位址是ds,bp對應的段位址是ss si di 是變址,單獨使用時段位址是ds,組合使用段位址是跟隨組合的基址對應的段位址 中進行記憶體單元定址彙總 si di bx bp 常量 si 常...