字符串操作

字符串操作在算法与数据操作中占到很重要的位置,本节将带大家一起学习c++中字符串的几项基本操作:

头文件:

字符串(字符数组)函数包含在string.h头文件中,在使用以下函数时,应注意加入头文件string.h。

C语言:

(1)strlen()函数:

函数简介:

strlen()函数可以得到字符数组中第一个\0前的字符的个数,其格式为:strlen(字符数组);

注意:

strlen()函数的不是数组的总长度,而是数组中有元素的数组长度。

程序代码:

#include<cstdio>
#include<cstring>
int main(){
	char str[10];
	gets(str);
	int len = strlen(str);
	printf("%d\n",len);
	return 0;
}

运行结果:

 

 

(2)strcmp()函数:

函数简介:

strcmp函数返回两个字符串大小的比较结果,比较原则是按字典序,其格式如下:

strcmp(字符数组1,字符数组2)

所谓字典序就是字符串在字典中的顺序,因此如果有两个字符数组str1和sr2,且满足st1[0…k-1]=str2[0…k-l]、str1[k]<str2]k],那么就说str1的字典序小于str2。例如"a"的字典序小于"b"、“aaa”的字典序小于“aab”。 strcmp的返回结果如下:

①如果字符数组1<字符数组2,则返回一个负整数(不同编译器处理不同,不一定是-1)。

②如果字符数组1=字符数组2,则返回0。

③)如果字符数组1>字符数组2,则返回一个正整数(不同编译器处理不同,不一定是+1)

程序代码:

#include<cstdio>
#include<cstring>
int main(){
	char str1[50],str2[50];
	while(gets(str1)){//一直重复输入 
		gets(str2);
		int cmp = strcmp(str1,str2);
		if(cmp<0){
			printf("str1<str2\n");
		}else if(cmp>0){
			printf("str1>str2\n");
		}else {
			printf("str1=str2\n");
		}
	}
	return 0;
}

运行结果:

 说明:

以上代码可以多次输入进行比较,如需结束,请ctrl+c。

 

 

(3)strcpy()函数

函数简介:

strcpy()函数可以把一个字符串复制给另一个字符串,其格式如下:

strcpy(字符数组1,字符数组2)

注意:

是把字符数组2赋值给字符数组1,这里的“赋值”也包括结束符\0。

程序代码:

#include<cstdio>
#include<cstring>
int main(){
	char str1[50],str2[50];
	gets(str1);
	gets(str2);
	strcpy(str1,str2);
	puts(str1);
	puts(str2);
	return 0;
}

运行结果:

说明:

以上输入str1和str2,str1用str2覆盖因而输出两个都是dy。

 

(4)strcat()函数

函数简介:

strcat可以把一个字符串接到另一个字符串后面,其格式如下:

strcat(字符串1,字符串2)

注意:

是把str2接到str1后面

程序代码:

#include<cstdio>
#include<cstring>
int main(){
	char str1[50],str2[50];
	gets(str1);
	gets(str2);
	strcat(str1,str2);
	puts(str1);
	puts(str2);
	return 0;
}

运行结果:

 

 

 

C++:

C++, 想要使用string ,必须要用命名空间 std,string 是标准库,C++标准引入了命名空间namespace,标准库的空间是std。

(1)find()函数:

函数简介:

从固定字符串中查找符合条件的字符(或字符串)的首字符位置,若查找失败,则返回-1。其格式如下:

str.find("将要查找的字符或者字符串");

程序代码:

#include<iostream>
#include<string>
using namespace std;
int main(){
    string str1,str2;
    cin>>str1>>str2;
    //查找该字符串第一个字符出现的位置 
	printf("%d\n",str1.find(str2));
	//从4开始查找 直到n-1 
	printf("%d\n",str1.find(str2,4)); 
	//从0开始查找 直到4
	printf("%d\n",str1.rfind(str2,4)); 
    return 0;
}

运行结果:

 

(2)substr()函数:

函数简介:

查询子串,返回固定位置的子串,其格式如下:

str.substr(字符数组的位置)

程序代码:

#include<iostream>
#include<string>
using namespace std;
int main(){
    string str;
    cin>>str;
    //返回str[4]及其之后的子串 
	cout<<str.substr(4)<<endl; 
	//返回str[2]之后的四个字符组成的子串 
	cout<<str.substr(2,4)<<endl;
    return 0;
}

运行结果:

 

(3)swap()函数:

函数简介:

交换两个字符串,其格式如下:

str1.swap(str2)。

程序代码:

#include<iostream>
#include<string>
using namespace std;
int main(){
    string str1,str2;
    cin>>str1>>str2;
	str1.swap(str2); 
	cout<<str1<<endl;
	cout<<str2<<endl;
    return 0;
}

运行结果:

 

(4)size()函数和length()函数

函数简介:

返回字符串的大小,其格式如下:

str.size();

str.length()。

程序代码:

#include<iostream>
#include<string>
using namespace std;
int main(){
    string str;
    cin>>str;
	cout<<str.size()<<endl;
	cout<<str.length()<<endl;
    return 0;
}

运行结果:

 

 注意:

在C语言和c++中很多的知识点是融会贯通的,string是c++中特有的知识点,c++中也可以使用char数组来表示字符串。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值