1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 《C++ Primer 第五版》(第3.5-3.6节) ——C++中的内置数组类型 string对象和C风格字符串

《C++ Primer 第五版》(第3.5-3.6节) ——C++中的内置数组类型 string对象和C风格字符串

时间:2021-07-26 08:12:19

相关推荐

《C++ Primer 第五版》(第3.5-3.6节)      ——C++中的内置数组类型 string对象和C风格字符串

1.C++中的内置数组类型

C++中的数组是内置数据类型,但不是基础数据类型而是构造数据类型,是有限个相同数据、占据着连续物理存储空间的有序集合。而内置数据类型定义的下标运算符可以处理负值运算(只要在数组范围之内),这和vector及string的下标运算符要求是无符号整数不一样。比如:

int a[10]={ 0 };

int *p = &a[2];

int j=p[1];//j=a[3];

int k=p[-2]; // k=a[1];

C++11引入begin()和end()(定义在头文件iterator中)两个非成员函数,使用这两个函数可以获得数组的头指针和尾后指针。一般情况下,碰到复杂的数组声明时,采用的原则是从数组名开始,从内到外,从右到左依次结合分析。比如:

int *ptr[10];//声明一个指针数组,数组里面含有10个整形指针;

int (*ptr)[10]; //声明一个数组指针,指针指向一个含有10个整形元素的首地址;

int (&ptr)[10]; //声明一个数组引用,引用绑定的是一个含有10个整形元素的首地址;

C++规定,不能使用数组或者vector去初始化数组,但是可以允许使用数组的首指针和尾后指针去初始化vector,比如:

int a[10]={0};

vector<int> vec(begin(a),end(a));

对于多维数组遍历或者其他对象如string和vector对象,使用范围for语句能够起到很好的效果。但是由于多维数组中只有最内层的是表示数据类型,其他都是表示指针类型,因此使用范围for语句遍历或修改多维数组的数据时,将除最内层循环变量的其他所有循环变量都设置为引用类型。比如:

int a[3][4][5]={0}; unsigned int cnt = 0 ;

for(auto &i : a)

for(auto &j : i)

for(auto k : j)

k=cnt++:

2.string对象和C风格字符串

C++为了兼容C中的字符串,将C中处理字符串的函数文件string.h变为cstring文件,其中string.h中常用的处理字符串的函数有:

strlen(p) //获取字符串的长度,末尾\0不计算在内;

strcmp(p1,p2); //比较两个字符串的大小,p1=p2,返回0;p1>p2,返回正值;p1<p2:返回负值;

strcat(p1,p2);//将字符串p1和字符串p2拼接,返回p1;(必须保证p1的内存能够完成这个操作)

strcpy(p1,p2): //将字符串p2拷贝给p1,返回p1;(必须保证p1的内存能够完成这个操作)

string中为了兼容C字符串,允许使用字符串字面值来初始化或赋值给string对象,同时允许在string对象的加法运算中一个对象为字符串字面值。除此之外,string中提供一个c_str()的成员函数来得到string对象对应的C风格字符串。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。