C++ Primer 学习札记(三)

来源:互联网 发布:avi视频制作软件 编辑:程序博客网 时间:2024/05/16 10:37

       第三章是标准库类型,除第二章介绍的基本数据类型外,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ц??