C++总结3(数组,字符数组,string)

本文深入解析C++中一维数组与二维数组的定义、初始化及访问方式,同时详述了字符串的多种创建方法、常见操作函数及其使用场景,为初学者提供全面的C++数组与字符串使用指南。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一维数组
类型名 数组名[元素个数];
类型名 数组名[]={};
类型名 数组名[元素个数]={};

  1. 定义数组就是定义了一段连续的空间,数组名即存放的是数组的首地址,通过下标变量来访问数组中的元素。
  2. 一维数组的映像:
a[0]
a[1]
a[2]
a[3]
  1. 数组的下标越界是很危险的事,C++编译器不会检测数组访问是否越界,不会对越界进行报错
  2. 定义的数组的大小为数组的配置长度,真正使用的部分为数组的有效长度

C++11访问数组

int a[]={1,2,3,4,5};
for(int x : a) cout<<x<<endl;

二维数组
类型名 数组名[行数][列数];
类型名 数组名[行数][列数]={};

  • 对每行的部分元素赋值。ex:int a[3][4]={{1,2},{3,4},{5}};
  • 二维数组的引用和以为数组类似。
  • 二维数组的内存映像:
a[0][0]
a[0][1]
a[1][0]
a[1][1]
a[2][0]

字符串
char a[]={'h','e','l','l','o','/0'};
char a[]={"hello"};
char a[]="hello";

  • 数组长度是字符数+1,因为最后有一个’/0’
  • 不含有任何字符的字符串为空字符串,用一对双引号表示""。空字符串占用一字节空间,其中储存了一个’/0’

字符的输入输出

  • 逐个字符的输入输出,和一般数组一样
  • 将字符串一次性地用cin,cout的>>和<<输入输出
  • 通过cin.getline或getline输入

cin.getline(ch,length,'结束标识符');
string
string str1;
string str2="";
string str3=("");
string str4=str1;

常用函数

#include<cstring>

getline(流对象,字符串,结束标记符);

length,size//取字符串的长度;

string &erase(int start = 0, int n = end);//删除start至end-1的n个字符,返回修改后的字符串

string &replace(int start, int end,const char *str, int n);//删除start至end-1的n个字符,然后在start处插入字符串str的前n个字符

string &insert(int start1,const string &str, int start2, int n);//在start1位置插入字符串s中start2开始的前n个字符

string &append(const char *s);//把s连接到当前字符串的结尾

string &operator +=(const string &s);//把s连接到当前字符串的结尾

int compare(int start1, int n,const string &s,int start2,int n2)const;//比较当前字符串从start1开始的n个字符组成的字符串与s中start2开始

char &at(int n);  //operator[]和at()均返回当前字符串中第n个字符的位置

string substr(int start = 0, int n = num) const; // 返回start开始的num个字符组成的字符串

int copy(char *s, int n, int start = 0) const;//把当前串中以start开始的n个字符拷贝到以s为起始位置的字符数组中,返回实际拷贝的数目

int capacity() const; //返回当前容量(即string中不必增加内存即可存放的元素个数)

bool empty() const;//当前字符串是否为空

void resize(int len, char c); //把当前字符串大小置为len,如果len比原字符串小,则从后面开始截断,如果比原字符串大,用字符c填充不足的部分。

strcpy(dst,src);//将字符串从scr复制到dst,返回dst的地址。dst必须为字符数组

strncpy(dst,scr,n);//至多从scr赋值n个字符到dst,返回dst的地址。dst必须为字符数组

strcat(dst,scr);//将scr拼接到dst后,返回dst的地址

strncat(dst,n);//从scr至多取n个字符【i能接到dst后,返回dst地址

strlen(s);//返回s的字符个数

strcmp(s1,s2);//比较s1,s2.>返回正值,=返回0,<返回负值

strncmp(s1,s2,n);//与strcmp类似,但至多比较n个字符

strchr(s,ch);//返回指向s中第一次出现ch的地址

strrchr(s,ch);//返回指向s中最后一次出现ch的地址

strstr(s1,s2);//返回指向s1中第一次出现s2的地址

PS

  1. 数组名是一个变量,但不是左值
  2. 用数组储存字符串,数组长度应比字符串长度多1
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值