C 程式設計學習筆記 基礎篇(二)標準庫型別

2021-07-29 08:02:19 字數 3714 閱讀 5219

1.string型別,首先要包含標頭檔案#include,才能使用string型別,string型別使用建構函式來初始化,預設建構函式為空串,有以下幾種初始化方式:

string s1 ;  預設s1空串

string s2(s1); 將s1賦值給s2

string s3("value"); 將字串賦值

string s4( n, 'c'); 將c 的n 個副本賦值給s4

2.string 型別的讀入,需要注意兩點: 讀取忽略開頭所有的空白字元(空格,換行符,製表符);讀取字元直至再次遇到空白字元就終止,而且不會儲存最後的空白字元(也就是說你輸入「   hello  world  」,字元s收到的是hello)。

3.getline讀取整行文字,即可以讀取空格字元。c++中本質上有兩種

getline函式

一種在標頭檔案中,是istream類的成員函式。一

種在標頭檔案中,是普通函

istream的過載形式**如下:是以字元陣列為讀取物件,大小有限制,

chars1[

10];

while

(cin

.getline

( s1

, 10

) )cout

<<

s1<<

endl

;

string中的getline形式則如下:

strings;

while

( getline

( cin

, s

) )cout

<<

s<<

endl

;

執行結果:

4.string的string::size_type型別,當你定義乙個string字串,呼叫str.size()的時候,很顯然會返回字串中字元的個數,但是這個數字的型別你並不知道,他是int 還是unsigned ? 重要的是int和unsigned之間不能直接賦值,所以這時候你需要用string::size_type型別,比如:

string

str(

"hello world"

);for

(string

::size_typei=

0;i<

str.

size

();i

++)cout

<<

str[

i];

5.一些重要的string物件操作符:,>= ;(按照字典排序比較),兩個string物件相加就是被定義為連線字元,而與字串之間的連線有些許不同,就是加號『+』操作符的左右運算元必須至少有乙個是string型別,如:

string s1= "hello" ;

string s2 = "world";

string s3 = s2 +"balabla" ; 可以,有s2

string s4 = "hello"+"fdsdfa" ; 不可以,沒有string物件

string s5 = s1 + "dfd" + "dfsadfa" ; 可以 s1+"dfd"會返回乙個string物件

string s6 = "sdf" + "dfs" +s1 ; 不可以

6.string物件的字串可以通過下標訪問字串中的每個字元,下標從0開始;

7.其他一些對string物件中字元處理的函式:(定義在cctype標頭檔案中)

isalnum(c) 如果字元是字母或數字,返回true

isalpha(c)  如果是字母,,返回true

isdigit(c)    如果是數字,返回true

isgraph(c) 如果不是空格,但可以列印,返回true

islower(c) 如果是小寫字母,返回true

isupper(c) 如果是大寫字母,返回true

isprint(c)   如果是可列印字元,返回true

ispunct(c) 如果是標點符號,返回true

isspace(c) 如果是空白字元,返回true

isxdigit(c)   如果是十六進製制數,返回true

tolower(c)  將大寫字母轉為小寫

toupper(c)  與上相反

8.另外,筆者是c++學習小白,筆記學習是源自《c++ primer》,所以看過這本書的大神就不要噴我了,筆者目的很單純——就是學習交流。下面是我認為比較有用的知識:c++標準庫除了自己定義的之外,還用了c的標準庫,像cctype就是利用c標準庫函式,這些庫函式定義在c標準庫的ctype.h標頭檔案中,c標準庫標頭檔案命名形式為name.h,而c++版本則命名為cname,少了字尾.h,而在前面加了c,c的意思是這個標頭檔案是源自c標準庫的。因此,cctype與ctype.h檔案的內容是一樣的,知識採用了更適合的c++程式的形式。特別地,cname標頭檔案中定義的名字都定義在命名空間std內,而.h版本中的名字卻不是這樣。

通常,c++程式中應採用cname這種標頭檔案的版本,而不用name.h版本,這樣,標準庫中的名字與std保持一致,使用.h 版本會給程式猿帶來負擔,因為他們必須記得哪些是標準庫名字從c繼承來的,哪些是c++所特有的。

1.頭函式#include,vector是同一種型別的物件的集合,vector是乙個類模板,並不是一種資料型別,但vector是一種資料型別。

定義時尖括號中要指定定義型別,如 vectorvec ; vectorvec2 ;

2.初始化,vectorv1 ; vectorv2(v1) ; vectorv3( n , i ) ; 表示v3包含n個值為i的元素。

vectorv4(n) ;表示v4含有

n個初始化值(同過預設建構函式或者建構函式初始化)的元素。vector可以動態的增加元素。

3.vector物件的操作

(1)v.empty();   判斷是否空 

(2)v.size();  獲取元素個數,同樣,返回值要用size_type的值,注意:這裡要指出型別:vector::size_type 

(3)v.push_back( t ) ;在v的末尾增加乙個值為 t的元素

(4)v[ n ] 返回v中位置為n 的元素

(5)v1 = v2 賦值 ;v1 == v2 判斷相等, !=,< ,<=, > ,>= 保持慣有意義

4.下標操作不能新增元素,只能獲取已經存在的元素,新增元素只能用push_back(t) 操作。

示例**:

#include

#include

#include

using

namespace

std;

intmain

()for

(vector

<

int>::

size_typej=

0;j!=

vec.

size();

j++) //c++一般使用 != ,而不是<

cout

<<

vec[

5]<<

endl

;cout

<<

vec2[4

]<<

endl

;

C 學習筆記 STL標準模板庫(二)STL容器類

介面卡容器 關聯式容器 vector與deque的迭代器支援算術運算,list的迭代器只能進行 操作,不支援普通的算術運算。引用標頭檔案用於儲存連續的元素,陣列,定義一維陣列,如下,vector int pos 32,1 定義32個字元 vector char a 32 a.pop back a.p...

C 標準程式庫(學習筆記)二

p48 c 在main 的末尾隱式定義了乙個return 0 p53standard exceptions exception p63pair的比較時,第乙個元素具有較高的優先順序,如果兩個pair的第乙個元素不相等,其比較結果就為整個pair的比較結果 make pair 使你無需寫出型別就可以生...

學習筆記二 基礎篇Windows基礎

c windows system32 config sam 存放windows賬戶和密碼的檔案 c windows system32 drivers etc host 解析網域名稱檔案 在執行中輸入 services.msc 按回車,可以進入服務 常見的服務 啟動項 msconfig 埠型別 公認埠...