C++字符串

目录

一.字符数组表示

1.一维字符数组

2.多维字符数组

3.字符数组处理函数

二.string类型表示

1.定义与初始化

2.字符串常用处理

3.字符串数组


一.字符数组表示

1.一维字符数组

1)类似数组,有长度可以不用初始化,有初始化可以不用长度

2)特殊:将字符串初始化给字符数组时,最后添加 ‘\0’ 作为结束标志,如:

char  a[]={"Hello"};  相当于char  a[]={'H','e','l','l','o','\0'};长度为6

若将单个字符初始化则不会出现,如:char a[]={'H','e','l','l','o'};长度为5

2.多维字符数组

1)类似数组,有长度可以不用初始化,有初始化可以不用长度

2)特殊:一字符串形式初始化,每个字符串最后都要加上‘\0’

3.字符数组处理函数

头文件<cstring>

1)strcpy函数

strcpy(str1,str2)  //将str2复制给str1
strncpy(str1,str2,n)  //将str2的前n个字符复制给str1

	char str1[]="Hello";
	char str2[]="Good Bye";
	strcpy(str1,str2);
	cout<<str1<<endl;

2)strcat函数

strcat(str1,str2)  //将str2添加到str1末尾
strncat(str1,str2)  //将str2的前n个字符添加到str1末尾

	char str1[]="Hello";
	char str2[]="Good Bye";
	strcat(str1,str2);
	cout<<str1<<endl;

 3)strcmp函数

strcmp(str1,str2)  //比较两个字符串大小
strncmp(str1,str2)  //比较两字符串前n个字符
stricmp(str1,str2)  //忽略大小写进行比较
//Windows中用stricmp,Linux中用strcase

/*若完全相等,返回0;若前面字符相等,而str1长度>str2长度,按str1>str2处理;
若str1>str2,返回一个正数(不一定为1);若str1<str2,返回一个负数(不一定为-1)
比较方法:从第一个字符开始比较,相等则往后比较,谁的ASCII码大,则谁大*/

	char str1[]="Hello";
	char str2[]="Good Bye";
	int m=strcmp(str1,str2);
	cout<<m<<endl;

4)strlen函数

strlen(str1)  //计算str1的长度

	char str1[]="Hello";
	int l=strlen(str1);
	cout<<l<<endl;

 5)puts函数

puts(str)  //输出字符串,注意最后有\0,会自动换行

char str1[]="Hello";
puts(str1);

6)gets函数

gets(str)  //输入字符串,以回车作为结束

char str1[5];
gets(str1);
puts(str1);

二.string类型表示

1.定义与初始化

1)头文件#include<string>

2)与字符数组不同,最后没有'\0'

2.字符串常用处理

1)相互赋值,如:str1=str2

2)对其中字符进行操作,如:

string word="HELLO";  word[2]='a';  则变为HALLO

3)运算,如:str3=str1+str2   即将str2链接到str1后赋值给str3

4)复制:(string复制给char[])

str1.copy(str2,n,m)  
//把字符数组str1中从m后复制n个字符到字符串str2
//注意:复制后会放在开头并替换原有字符

	char str1[20]="Hello";
	string str2="Bye";
	str2.copy(str1,1,1);
	cout<<str1<<endl;
    //结果:yello

5)复制:(char[]赋值给string)

str2.assign(str1,n,m)
//将字符数组str1从m后的n个字符赋值给字符串str2
//注意:原有字符不保留

	char str1[20]="Hello";
	string str2="Bye";
	str2.assign(str1,3,1);
	cout<<str2<<endl;
    //结果:ell

6)求长度

str.size()   str.length()
//返回str的长度,二者没有区别

	string str="Bye";
	int n1=str.size();
	int n2=str.length();
	cout<<n1<<' '<<n2<<endl;

7)提取字符串

str2=str1.substr(n,m)
//提取字符串str1中n个后的m个字符赋值给字符串str2

	string str1="GoodBye";
	string str2=str1.substr(2,4);
	cout<<str2<<endl;
    //结果:odBy

8)查找字符串位置

str.find("str1")
//在str中查找str1字符串并返回其位置
//注意:返回位置需+1才为可见位置

	string str1="GoodBye";
	int n=str1.find("Bye");
	cout<<n<<endl;

9)删除字符

str.erase(n,m)
//在字符串str中删除从n个后的m个字符

	string str1="GoodBye";
	str1.erase(4,3);
	cout<<str1<<endl;

10)增加字符

str1.append(str2,n,m)
//在str1末尾增加str2中n个后的m个字符

	string str1="GoodBye";
	str1.append("0123",1,3);
	cout<<str1<<endl;
    //结果:GoodBye123

11)字符串替换

str1.replace(n1,m1,str2,n2,m2)
//将str1中n1个后的m1个字符删除,在n1后插入str2中n2后的m2个字符

	string str1="GoodBye";
	string str2="Hi Morning";
	str1.replace(4,3,str2,3,7);
	cout<<str1<<endl;
    //结果:GoodMorning

12)字符串插入

str1.insert(n,str2,n1,m1)
//在str1的第n个字符后插入str2的n1后的m1个字符

	string str1="GoodBye";
	string str2="Hi Morning";
	str1.insert(4,str2,3,7);
	cout<<str1<<endl;
    //结果:GoodMorningBye

3.字符串数组

类似字符数组,但每个字符串最后不包含‘\0’

string name[5]={"Zhang","Yang","Sun","Li","Wang"}

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值