您的位置:首页 > 编程语言 > C语言/C++

C++primer第4版第三章标准库类型

2016-12-01 16:32 246 查看
Talk is cheap, show me the code.

包含文件加不加.h后缀的区别:C语言中的头文件都是包含.h的,比如stdio.h,iostream.h等,C++为了兼容C语言,采用去掉.h后缀的形式,但其实用法是一样的,比如stdio,iostream等。但有一个区别是,C语言中也有string.h,但是C++中的string库却和C语言中的不一样,string是C++的一个类。

string作为一个类,它的初始化是通过调用构造函数完成的。初始化有几种形式:

string s1;  //s1 == ""

string s2("he");  //s2 == "he"

string s3(s1);   //s3 == "he"

string* s4 = new string("hello");  //*s4 == "hello"

string s5(2, 'c');   //s5 == "cc"


string.size()的返回值类型是string::size_type 它与unsigned类型一致,保存数的范围是int型的两倍。对于没超过int表示范围的值用int或者string::size_type变量保存都行,但是一旦超出int表示范围就必须使用string::size_type保存。

string是一个类,需要注意与字符串字面量“hello”进行区分,内存中存储的方式不同。

C++提供了处理单个字符的标准库,#include ,这是对C语言标准库ctype.h的兼容库,里面提供了对单个字符处理方法,常用如下:

ispunct(char c) //判断是否标点符号

isdigit(c)  //判断是否数字

isupper(c)  //判断是否大写字母

islower(c)  //判断是否小写字母

isalpha(c)  //判断是否字母

isalnum(c)  //判断是否字母或者数字

isprint(c)  //判断是否是可打印字符


vector不能直接cout,即cout << vect编译报错;另外因为vector的大小没有指定不能直接用vect[0]=1来添加元素,在已经存在的情况下修改倒是可以的。

在使用while(cin>>str){}来输入不确定个数的字符串时,可以利用ctrl+d来输入eof字符以结束输入流。要查看linux快捷键的功能设置,直接输入命令stty -a即可。

vector不是一种数据类型,而只是一种类模板,而vector是一种数据类型。

iterator对于每种容器都有具体的类型实现,比如vector::iterator。 iter=vect.begin()如果容器不为空,则指向容器中第一个元素,如果容器为空,则和end()值指向相同,不指向容器中任何元素;iter=vect.end()不管容器是否为空,都指向容器中最后一个元素的下一个元素,即不指向容器中任何一个元素,起到哨兵的作用。

const_iterator是自身值可以改变的迭代器,但是不能改变迭代器指向的值,即是只能读不能写的iterator。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++primer