【字符串、向量、数组】

命名空间声明

using namespace::name;

  头文件中的代码不应该使用using声明,因为每个头文件的内容会拷贝到所有引用他的文件中去,如果头文件中有声明,那么每个程序都会有这个声明,可能会产生某些冲突。

string

初始化字符串的方式

1.string s1;//默认初始化为空串
2.string s2(s1);
3.string s2=s1;
4.string s3("value");
5.string s3="value";
6.string s4(n,'c');//把s4初始为由n个字符c组成的串

注意:string默认含有一个无参构造函数,会将字符串初始化为一个空串。

拷贝初始化:是指使用等号(=)初始化一个变量,例如上面的3,5

直接初始化:不使用等号(=)初始化的方式叫做直接初始化,例如2,4,6

getline

getline(is,s)是指从is中读取一行赋给s,并返回is.

getline遇到换行符停止读入。

size函数

size函数返回一个string对象的长度。他的函数返回类型值是string::size_type类型的值,是一个无符号类型的值,可以放下任何string对象的大小。

字符串相加

允许对string对象使用加法运算符(+)。

当string对象和字符字面值及字符串字面值混在一条语句中时,必须确保每个加法运算符的两侧的对象至少有一个string对象。

string s1;
string s6=s1+","+"ww";//正确
string s7=","+"ww"+s1;//错误

s6的工作机制和连续输入连续输出一样,s1+","的结果是一个string对象

vector

初始化

1.vector<T> v1;
2.vector<T> v2(v1);
3.vector<T> v2=v1;
4.vector<T> v3=(n,val);
5.vector<T> v4(n);
6.vector<T> v5{a,b,c,d...};
7.vector<T> v5={a,b,c,d...};

在初始化的过程中,如果使用的是圆括号,就是用来构造vector对象的,例如v4就说明vector对象的容量。

如果是花括号,可以认为是列表初始化。但是如果初始化使用了花括号,但提供的值又不能列表初始化,可以考虑用这样的值构造vector对象,例:

vector<string> v7{10};//v7有十个默认初始化的元素
vector<string> v8{10,"hi"};//v8有10个值为”hi"的元素

使用数组为vector赋值时,指明拷贝区域的首元素地址和尾后地址即可。

vector<int> v(begin(arr),end(arr));
vector<int> v1(arr+1,arr+ 4);//拷贝三个元素给v1

数组

定义数组时必须指定数组的类型,不允许使用auto关键字由初始值列表推断数据类型。

数组的元素应为对象,所以不存在引用的数组。

数组的下标应该大于等于0而小于数组的大小。

对数组元素使用取地址符就会得到指向该元素的指针,在很多用到数组名字的地方,编译器会自动将其替换为一个指向数组首元素的指针。

string *p2=nums;//等价于p2=&nums[0]

当使用数组作为一个auto变量的初始值时,推断得到的类型是一个指针。

当使用decltype关键字时不会发生数组向指针的转换,decltype(ia)返回的类型是由10个整数的数组。

c风格字符串

c风格字符串是一种书写习惯,此书写习惯将字符串放在字符数组中并以空字符结束('\0\)

c风格字符串函数

strlen(p)

strcmp(p1,p2)

strcat(p1,p2);将p2追加在p1后面

strcpy(p1,p2);

以上函数传入的参数必须是指向以空字符作为结束的数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值