一、标准库类型 string
string表示可变长字符序列,使用string类型前一定要包含string的头文件! 同时string是定义在命名空间std中的,所以使用之前要用using 声明一下。例如:
#include <string>
using namespace std;
比较string类型
可以用关系运算符<、<=、>、>=、==、!=来比较两个string对象,这就体现了比c风格字符串方便之处。
c风格字符串的比较需要用strcmp()函数来实现。
两个string对象相加
string a = "cat ";
string b = "and dog";
string c = a + b;//输出结果就是cat and dog
这个效果就是将两个字符串拼接起来,但是如果使用c风格字符串拼接就比较麻烦了。
char a[20] = "hello ";
char *b = "world";
char *c = nullptr;
c = strcat(a, b);
cout << c << endl;
这个结果就是 hello world, 这个显然看起来还是更加麻烦一点,要让上面的代码通过编译需要加上一系列的头文件。
二、标准库类型vector
标准类型vector表示对象的集合,其中所有的对象的类型都相同,这一点和数组相同。集合中的每个对象都有一个与之对应的索引,索引用于访问对象。
【注意】在使用vector之前一定要加上头文件,同时和string一样,它也是定义在std命名空间中的,所以需要做如下的声明。
#include <vector>
using namespace std;
【注意】vector 是模板而不是类型,所以用vector生成的类型需要包含其中元素的类型。
例如:vector<int > v1;
向vector对象中添加元素
我们可以使用vector的成员函数push_back来添加元素
例如:
vector<int> v;
v.push_back(2);
三、数组
数组的声明形式 a[d]其中a是数组名字,d表示数组的维度,也就是其中元素的个数。
【注意】:编译的时候数组的维度肯定是已知的,所以维度必须是一个常量表达式!
【注意】:数组不允许拷贝和赋值,也就是说不能将数组的内容拷贝给其他的数组作为其初始值,也不能用数组给其他数组赋值!
访问数组中的元素
我们可以通过下标运算符([])来访问数组中的元素
int a[2] = {1,2};
int b = a[0];
其中b的值就是1,
数组的下标从0开始。
【注意】:用下标运算符的时候一定要注意不要越界,编译器编译的时候不会检查下标是否越界!
我们还可以通过指针来访问数组中的内容
int a[2] = { 1,3 };
int *p = a;
cout << *(p+1) << endl; //*(p+1) 相当于 a[1],结果是3
但是我们通过指针访问的时候一定要注意解引用符*所在的位置,(p+1)两端的括号一定不能省略,否则结果就不一样了。
int a[2] = { 1,3 };
int *p = a;
cout << *p+1 << endl; //这样的结果就是2了,因为先解引用了p,p是指向a数组的首地址的,里面的元素就是1,然后加上1结果就为2!
如果有什么不正之处,希望各位大神能够指正。