C 複習之路三 字串 陣列

2021-08-18 18:16:41 字數 1902 閱讀 1547

一、標準庫型別 string

string表示可變長字串行,使用string型別前一定要包含string的標頭檔案! 同時string是定義在命名空間std中的,所以使用之前要用using 宣告一下。例如:

#include using namespace std;
比較string型別

可以用關係運算子<、<=、>、>=、==、!=來比較兩個string物件,這就體現了比c風格字串方便之處。

c風格字串的比較需要用strcmp()函式來實現。

兩個string物件相加

string a = "cat ";

string b = "and dog";

string c = a + b;//輸出結果就是cat and dog

這個效果就是將兩個字串拼接起來,但是如果使用c風格字串拼接就比較麻煩了。

char a[20] = "hello ";

char *b = "world";

char *c = nullptr;

c = strcat(a, b);

cout << c << endl;

這個結果就是 hello world, 這個顯然看起來還是更加麻煩一點,要讓上面的**通過編譯需要加上一系列的標頭檔案。

二、標準庫型別vector

標準型別vector表示物件的集合,其中所有的物件的型別都相同,這一點和陣列相同。集合中的每個物件都有乙個與之對應的索引,索引用於訪問物件。

【注意】在使用vector之前一定要加上標頭檔案,同時和string一樣,它也是定義在std命名空間中的,所以需要做如下的宣告。

#include using namespace std;
【注意】vector 是模板而不是型別,所以用vector生成的型別需要包含其中元素的型別。

例如:vectorv1;

向vector物件中新增元素

我們可以使用vector的成員函式push_back來新增元素

例如:

vectorv;

v.push_back(2);

三、陣列

陣列的宣告形式 a[d]其中a是陣列名字,d表示陣列的維度,也就是其中元素的個數。

【注意】:編譯的時候陣列的維度肯定是已知的,所以維度必須是乙個常量表示式!

【注意】:陣列不允許拷貝和賦值,也就是說不能將陣列的內容拷貝給其他的陣列作為其初始值,也不能用陣列給其他陣列賦值!

訪問陣列中的元素

我們可以通過下標運算子()來訪問陣列中的元素

int a[2] = ;

int b = a[0];

其中b的值就是1,

陣列的下標從0開始。

【注意】:用下標運算子的時候一定要注意不要越界,編譯器編譯的時候不會檢查下標是否越界!

我們還可以通過指標來訪問陣列中的內容

int a[2] = ;

int *p = a;

cout << *(p+1) << endl; //*(p+1) 相當於 a[1],結果是3

但是我們通過指標訪問的時候一定要注意解引用符*所在的位置,(p+1)兩端的括號一定不能省略,否則結果就不一樣了。

int a[2] = ;

int *p = a;

cout << *p+1 << endl; //這樣的結果就是2了,因為先解引用了p,p是指向a陣列的首位址的,裡面的元素就是1,然後加上1結果就為2!

如果有什麼不正之處,希望各位大神能夠指正。

三 字串 向量 陣列

直接初始化和拷貝初始化 string s1 10,c string s2 string 10,c 會影響效能 s1.size 返回物件中字元的個數,型別為string size type,是無符號型別,不要與有符號型別混用 範圍 for string str some string for auto...

三 字串 向量和陣列

一 標準庫型別string 1 使用等號 初始化乙個變數,執行的是拷貝初始化,編譯器把等號右側的初始值拷貝到新建立的物件中 如何不使用等號,則執行的是直接初始化。2 os is s 從is中讀取字串賦給s,字串以空白分隔,返回is getline is,s 從is中讀取一行賦給s,返回is 3 st...

三 字串 一

三 字串 1。直接量三種寫法 1 單引號,不會替換變數,且只支援 兩個轉譯字元 2 雙引號,會進行變數替換,雙引號能支援除了 以外的所有轉譯符 3 heredoc,比如 string end of string haha hehe hoho.hehe end of string 其中end of s...