字符数组与字符串
一、字符数组
1.字符数组初始化
类型 数组名[长度]={元素1,元素2...};
类型 数组名[长度]=“abcde”;
char a[5]={'a','b','c','d','e'};
char b[5]="abcde"; //错误:末尾还需要存放\0
for(int i=0;i<5;i++) cout<<a[i];
2.字符数组的输入输出
使用cin,cout,printf()
注意:遇到空格或者回车就会停止
char str[100];
cin>>str; //输入字符串时,遇到空格或者回车就会停止
cout<<str<<endl;//输出字符串时,遇到空格或者回车不会停止,遇到'\0'时停止
printf("%s\n",str);
3.字符数组的常用操作
下面几个函数需要引入头文件
#include <string.h>
(1)strlen(str);,求字符串的长度
char a[5]={'a','b','c};
char b[5]="abc";
cout<<strlen(b) //输出结果: 3
(2)strcmp(a,b),比较两个字符串的大小,a<b返回-1,a==b返回0,a>b返回1。这里的比较方式是字典序!
char a[5]={'a','b','c'};
char b[5]="abc";
cout<<strcmp(a,b);
(3)strcpy(a,b),将字符串b复制给从a开始的字符数组。
char a[100]="hello world!",b[100];
cout<<strcpy(b,a)<<enld;
cort<<b //输出结果:hello world!
二、类型string字符串
可变长的字符序列,比字符数组更加好用。需要引入头文件:
#include <strng>
1、定义和初始化
string s1; //默认初始化,s1是一个空字符串
string s2=s1; //s2是s1的副本,注意s2只是与s1值相同,并不指向同一地址
string s3="hiya"; //s3是该字符串字面值的副本
string s4(10,'c'); //s4的内容是“cccccccccc”
2、string的输入输出
(1)cin,cout
string s1,s2;
cin>>s1>>s2;
cout<<s1<<s2<<endl;
注意:不能用printf直接输出string,需要写成printf("%s"s.c_str());
(2)使用getline读取一整行
string s;
getline(cin,s);
cout<<s<<endl;
3、string的empty和size操作(注意size是无符号整数,因此s.size() <=-1一定成立):
string s1,s2="abc";
cout<<s1.empty()<<endl; //为空返回1
cout<<s2.empty()<<endl;//不为空返回0
cout<<s2.size() <<endl;
4、string的比较
支持>,<,>=,<=,!=等所有比较操作,按字典序进行比较。
5、为string对象赋值
string s1(10,'c'),s2; //s1的内容是cccccccccc;s2是一个空字符串
s1=s2; //赋值:用s2的副本
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具