C++Primer学习笔记(二)
17.string對象中字符的處理:
cctype頭文件中定義:
isalnum(c) 如果c是字母或數字,則為true
isalpha(c) 如果c是字符,則為true
iscntrl(c) 如果c是控制字符,則為true
isdigit(c) 如果c是數字,則為true
isgraph(c) 如果c不是空格,但可打印,則為true
isprint(c)? 如果c是可打印字符,則為true
ispunct(c)? 如果c是標點符號,則為true
isspace(c)? 如果c是空白字符,則為true
isupper(c)? 如果c是大寫字母,則為true
islower(c)? 如果c是小寫字母,則為true
isxdigit(c)? 如果c是十六進制數,則為true
tolower(c)? 如果c是大寫字母,則返回其小寫形式,否則直接返回c
toupper(c)? 如果c是小寫字母,則返回其大寫形式,否則直接返回c
空白字符指:空格,制表符,垂直制表符,回車,換行符,進紙符
(示例1:輸出給定的string對象中標點符號的個數)
1 #include <iostream> 2 #include <string> 3 #include <cctype> 4 using namespace std; 5 6 void main() 7 { 8 string s("!Hello LatourEiffel!!!"); 9 string::size_type count = 0; 10 11 for (string::size_type index = 0; index != s.size(); index++) 12 { 13 if(ispunct(s[index])) 14 { 15 count++; 16 } 17 } 18 cout<<count 19 <<" punctuation characters in " 20 <<s<<endl; 21 }
?
(示例2:把string對象中的字母全部大寫字母輸出)
1 #include <iostream> 2 #include <string> 3 #include <cctype> 4 using namespace std; 5 6 void main() 7 { 8 string s("!Hello LatourEiffel!!!"); 9 10 for (string::size_type index = 0; index != s.size();index++) 11 { 12 s[index] = toupper(s[index]); 13 } 14 cout<<s<<endl; 15 }
?
18.標準庫vector類型:
vector是同一種類型的對象的集合,每個對象都有一個對應的整數索引值.
通過將類型放在類模版名稱后面的<>中類指定數據類型:
vector<int> ivec;
vector<Sales_item> Sales_vec;
vector不是一種數據類型,而只是一個類模版.
vector類型的每一種都指定了其保存元素的類型,
如vector<int>和vector<string>都是數據類型.
vector對象的初始化:
vector<T> v1;?? vector保存類型為T的對象,默認構造函數V1為空
vector<T> v2(v1);? v2是v1的一個副本
vector<T> v3(n,i);? v3包含n個值為i的元素
vector<T> v4(n);? v4含有值初始化的元素的n個副本
如:
vector<int> ivec(10,-1);?//10 elements,each initialized to -1
vector<string> svec(10,"hi!");?//10 strings,each initialized to "hi!"
19.vector對象的操作:
v.empty()? 如果v為空,則返回true,否則返回false
v.size()? 返回v中元素的個數
v.push_back(t)? 在v的末尾增加一個值為t的元素
v[n]?? 返回v中位置為n的元素
v1 = v2?? 把v1的元素替換為v2中元素的副本
v1 == v2? 如果v1與v2相等,則返回true
注意:vector中size和empty的操作和string中相關操作類似:
vector<int>::size_type
20.vector的下標操作不能添加元素:
vector<int> ivec;
for (vector<int>::size_type ix = 0; ix != 10; ++ix)
?{
??ivec[ix] = ix;
?}
錯誤:上述程序中的ivec是空的vector對象,而下標只能用于獲取已存在的元素.
正確寫法如下:
for (vector<int>::size_type ix = 0; ix != 10; ++ix)
{
?ivec.push_back(ix);//ok!
}
?
轉載于:https://www.cnblogs.com/LatourEiffel/archive/2012/11/24/2785732.html
總結
以上是生活随笔為你收集整理的C++Primer学习笔记(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 面向对象编程(OOP)----BLUE大
- 下一篇: 实测 Mysql UUID 性能(转)