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[string中的getline形式則如下:10];
while
(cin
.getline
( s1
, 10
) )cout
<<
s1<<
endl
;
strings;執行結果:while
( getline
( cin
, s
) )cout
<<
s<<
endl
;
4.string的string::size_type型別,當你定義乙個string字串,呼叫str.size()的時候,很顯然會返回字串中字元的個數,但是這個數字的型別你並不知道,他是int 還是unsigned ? 重要的是int和unsigned之間不能直接賦值,所以這時候你需要用string::size_type型別,比如:
string5.一些重要的string物件操作符:,>= ;(按照字典排序比較),兩個string物件相加就是被定義為連線字元,而與字串之間的連線有些許不同,就是加號『+』操作符的左右運算元必須至少有乙個是string型別,如:str(
"hello world"
);for
(string
::size_typei=
0;i<
str.
size
();i
++)cout
<<
str[
i];
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 埠型別 公認埠...