C++复习之路三——字符串、数组

一、标准库类型 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!


如果有什么不正之处,希望各位大神能够指正。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值