c++ string 数组_C++编程基础: 5. 数组和字符串

019b5fe497d30ac2b5646bec4d84c3a3.gif

本系列文章是配合我发布的《C++编程基础》系列视频教程的知识点总结和补充。

数组是用来顺序存放相同类型数据的集合,根据实际需要,如果集合存放固定数量的数据,使用静态数组即可,如果集合中数据的数量不确定,则应选择用动态数组来进行存储。

静态数组

静态数组一旦声明,它的长度就是固定的,所以称它是静态的。

声明数组时,类似于声明变量时的格式,只是在数组名后面多了一对中括号[ ],其中包含数组的长度,可以是一个整型常量(注意,是在声明时,在调用数组中的值或为数组中某一项进行赋值时,中括号[]中的值是该项对应的索引值,数组中第一项的索引值为0)。

int scores[6]=

{23,43,98,93,87,24};

const int LENGTH=6;

int scores[LENGTH]=

{23,43,98,93,87,24};

如果声明数组时每个数组项的初始值已经给出,可以省略中括号中的长度值,如:

int scores[]=

{23,43,98,93,87,24};

声明一个整数型的静态数组时,如果不对数组初始化每一项的值,未被初始化的项值默认为0。

声明一个长度为8的整数型数组,默认初始化所有数组项值为0:

int zeros[8]={};  

初始化前两个数组项的值,其余默认为0:

int partial[7]={23,89};

声明一个字符型数组:

char word[]={'B','l','u','e'};

char hello[]="Hello";

打印字符型数组的值:

cout<<"word[]:"<endl;

cout<<"hello[]:"<endl;

输出结果:

word[]:Blue

hello[]:Hello

改变字符数组中某一项的值,单字符要用单引号括起,如:

word[0]='C';

输出结果:

word[]:Clue

对字符数组进行赋值不能直接用 word=“new word”; 这样的语句,而需要用strcpy函数:

strcpy(word, "Warrior");

使用函数strlen(数组名)可以得到数组的长度:

cout<<"word[]:"<endl;

cout<<"the size of array word:"<<strlen(word)<<endl;

这样赋了新值后打印出来的结果为(在不同机子上可能会得出不同的结果):

word[]:Warrior

the size of array word:7

请注意这里虽然显示数组word的长度发生了变化,但不能确定它在其他环境下仍能得出如下结果,这样使用可能会增加程序的不确定性而影响兼容性,因此应该尽量避免,还是应该以静态数组的长度不能更改为准则。

以上是一维数组,还可以有多维数组,例如二维数组,可以把它理解为有行有列的一张表,数值所在的行数和列数定了,数值就定位了。

声明一个3行2列的二维整数型数组:

int class_scores[3][2]=

{{23,45},{78,89},{43,98}};

为数组中的某一项赋值:

partial[4]=33;

class_scores[1][1]=37;

动态数组

如果数组的长度会发生变化,则应考虑使用动态数组vector存储数据。使用vector类中的函数前,要先在程序头部添加包含该类的预处理指令。

#include 

另外,还要声明使用命名空间std中的vector。

using std::vector;

声明长度为2的整数型动态数组:

vector<int> dynamicArr(2);

为动态数组赋值:

dynamicArr[0] = 12;

dynamicArr[1] = 9;

在该数组尾部添加一个值为31的新数组项:

dynamicArr.push_back(31);

打印数组中某项的值:

cout<0] <<endl;

cout<1] <<endl;

以及打印最后一位数组项的值:

cout<dynamicArr.size()-1] <<endl;

输出结果:

12

9

31

字符串 string

使用字符数组的方式描述字符串非常麻烦,因此推荐使用string这个类来存储字符串类型的数据。

使用string类中的函数前,要先在程序头部添加包含该类的预处理指令。

#include 

另外,还要声明使用命名空间std中的string。

using std::string;

string可被视为一个动态的数据类型,它的长度可以变化,因此使用起来也更加方便,字符串的值要用双引号来括起,在编写代码时,键入双引号、单引号、分号时要特别注意不要用中文输入法来进行输入,计算机处理时会认为它们并不同于英文输入法下的对应字符。

string strName="Nini";

string strSurname="Li";

可以直接使用等号=进行赋值,而不需要借助strcpy()函数。

strSurname="Lee";

可以直接使用加号+将两个或更多的字符串相连:

cout<" "+strSurname<<endl;

输出结果:

Nini Lee

可以用string类中的函数append()将两个字符串相连接,新的字符串将赋给调用这个函数的字符串变量。

strName.append(strSurname);

cout<endl;

输出结果:

NiniLee

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值