字符串操作在算法与数据操作中占到很重要的位置,本节将带大家一起学习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数组来表示字符串。