C++Primer学习笔记(二)

本文介绍使用C++中的cctype头文件进行字符处理,包括判断字符类型、转换大小写,以及使用vector数据结构的基本操作,如初始化、遍历和修改元素。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值