C++ Primer 学习札记(三)

       第三章是标准库类型,除第二章介绍的基本数据类型外,C++还定义了一个内容丰富的抽象数据类型标准库。其中最重要的标准库类型是stringvector,他们分别定义了大小可变的字符串和集合。stringvector往往将迭代器用作配套类型(companion type),用于访问string中的字符,或者vector中的元素。这些标准库类型是语言组成部分中更基本的那些数据类型(如数组和指针)的抽象。

       另一种标准库类型是bitset,提供了一种抽象方法来操作位的集合。与整型值上的内置位操作符相比,bitset类类型提供了一种更方便的处理位的方式。

 

 

脚印:

       1.抽象数据类型:之所以说这些标准库类型是更高级的,是因为其中反映了更复杂的概念;之所以说它是抽象的,是因为我们在使用时时不需要关心它们是如何表示的,只需知道这些抽象数据类型支持哪些操作就可以了。

       2. 命名空间的using声明:使用using声明可以在不需要加前缀namespace_name::的情况下访问命名空间中的名字。Using声明的形式如下:

       using namespace::name;

       每个名字都需要一个using声明,因为一个using声明一次只能作用于一个命名空间成员。在编译前一定要注意在程序中添加适当的#includeusing声明。

       3. 头文件应该只定义确实必要的东西!!!

      4. 几种初始化String对象的方式:

string s1;

默认构造函数,s1为空串

string s2(s1);

s2初始化为s1的一个副本

string s3("value");

s3初始化为一个字符串字面值副本

string s4(n, 'c');

s4初始化为字符'c'n个副本

       5.标准库string类型和字符串字面值的区别:因为历史原因以及为了与C语言兼容,字符串字面值与标准库string类型不是同一种类型。这一点很容易引起混乱,编程时一定要注意区分字符串字面值和string数据类型的使用,这很重要!!!

       6. 从标准输入读取string,并将读入的串存储在s中。string类型的输入操作符:

              (1)读取并忽略开头所有的空白字符(如空格,换行符,制表符)。

(2)读取字符直至再次遇到空白字符,读取终止。

       7. getline:这个函数接受两个参数:一个输入流对象和一个string对象。getline函数从输入流的下一行读取,并保存读取的内容到string中,但不包括换行符。

       8.结束符还是end-of-file

       9.由于getline函数返回时丢弃换行符,换行符将不会存储在string对象中。

10. string::size_type类:size操作返回的是string::size_type类型的值。所以任何存储stringsize操作结果的变量必须为string::size_type类型。特别重要的是,不要把size的返回值赋给一个int变量。

       11.string对象中字符的处理:

       12.建议:采用C标准库头文件的C++版本C++标准库除了定义了一些特定于C++的设施外,还包括C标准库。C++中的头文件cctype其实就是利用了C标准库函数,这些库函数就定义在C标准库的ctype.h头文件中。

C标准库头文件命名形式为name.h,而C++版本则命名为cname,少了后缀.h而在头文件名前加了cc表示这个头文件源自C标准库。因此,cctypectype.h文件的内容是一样的,只是采用了更适合C++程序的形式。特别地,cname头文件中定义的名字都定义在命名空间std内,而.h版本中的名字却不是这样。

通常,C++程序中应采用cname这种头文件的版本,而不采用name.h版本,这样,标准库中的名字在命名空间std中保持一致。使用.h版本会给程序员带来负担,因为他们必须记得哪些标准库名字是从C继承来的,而哪些是C++所特有的。

13.string操作

s.empty()

s.size()

s[n]

s1 + s2

s1 = s2

v1 == v2

!=, <, <=,

 >=

如果s为空串,则返回true,否则返回false

返回s中字符的个数。

返回s中位置为n的字符,位置从0开始计数。

s1s2连接成一个新字符串,返回新生成的字符串。

s1内容替换为s2的副本。

比较v1v2的内容,相等则返回true,否则返回false

保持这些运算符惯有的含义。

14. cctype定义的函数:

isalnum(c)

如果c是字母或数字,则为true

isalpha(c)

如果c是字母,则为true

iscntrl(c)

如果c是控制字符,则为true

isdigit(c)

如果c是数字,则为true

isgraph(c)

如果c不是空格,但可输出,则为true

islower(c)

如果c是小写字母,则为true

isprint(c)

如果c是可输出的字符,则为true

ispunct(c)

如果c是标点符号,则为true

isspace(c)

如果c是空白字符,则为true

isupper(c)

如果c是大写字母,则为true

isxdigit(c)

如果c是十六进制数,则为true

tolower(c)

如果c是大写字母,则返回其小写字母形式,否则直接返回c

toupper(c)

如果c是小写字母,则返回其大写字母形式,否则直接返回c

 

 

 

                                                                                                         ——??XāΩādц??

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值