笔记 字符串常用函数(随学习不断更新)

1 substr()是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度

形式 : s.substr(pos, len)
返回值: string.  pos是复制开始的位置,len则是复制字符串的长度。(pos的默认值是0,len的默认值是s.size() - pos,即不加参数会默认拷贝整个s)
异常 :若pos的值超过了string的大小,则substr函数会抛出一个out_of_range异常;若pos+n的值超过了string的大小,则substr会调整n的值,只拷贝到string的末尾

string s="sfsa";
	string a=s.substr(0,3);
	string b=s.substr();
	string c=s.substr(2,3);

reverse()字符串反转函数(头文件:#include<algorithm>)

形式:1.       reverse(key.begin(),key.end());
       // 对于定义的string型的话呢翻转的是起点和终点这段区间 和sort用法类似;[st,ed)

         2 .    reverse(str+1,str+len);

    // 对于定义的char[]型的话呢,就是填充的是翻转的位置,从哪里到哪里;类型和sort一样;

#include<iostream>
#include<string.h>
#include<stdio.h>
#include<algorithm>//字符串反转函数需要的头文件 
using namespace std;
int main () {
	char str[100];
	string key;
	cin>>key;
	reverse(key.begin()+1,key.end()-2);
	// 翻转的是起点和终点这段区间 和sort用法类似;[st,ed)
	cout<<key<<endl;

	scanf("%s",str);
	int len=strlen(str);
	reverse(str+1,str+len);

	// 对于定义的char型的话呢,就是填充的是翻转的位置,从哪里到哪里;类型和sort一样;

	cout<<str<<endl;
	return 0;
}

3 memset()万能初始化函数

形式:memset(arr, key, sizeof(arr))

  arr--是需要初始化的数组,key--是初始值,sizeof(arr)--是数组大小

功能:为任何类型数组的数据进行初始化。

特别注意:

memset()函数只用来初始化-1,0。不初始化其他数据,例如:memset(arr,INT_MAX,sizeof(arr))就会出现问题

	char arr[2][5];
	memset(arr,'-',sizeof(arr));//二维数组初始化完成
   
    string err[1000];
    memset(err,"yes",sizeof(err));//全部初始化为yes

    int irr[5];
	memset(irr,0,sizeof(irr));//全部初始化为0

4.strstr()  判断子串函数

用法: strstr(str1,str2) 函数用于判断字符串str2是否是str1的子串。如果是,则该函数返回 str1字符串从 str2第一次出现的位置开始到 str1结尾的字符串;否则,返回NULL

注意:传入的str1,str2均为char*,而非string型

char str1[100]="pressure";
char str2[100]="press";
if(strstr(str1,str2)!=NULL)
cout<<"yes";

5.getline()一行字符串的读入问题(包括空格

用法:1 对于string类型的用法是:getline(cin,str);

           2 对于char【】的用法是:cin.getline(arr,sizeof(arr));

           3 对于char【】字符数组另一种读取:gets(arr;//直到换行结束

更多用法见如下代码:

#include<iostream>
#include<string>
using namespace std;
int main() {

	string str1,str2;

	char str3[100],str4[100],s,str5[100],str6[100];

	cout<<"string读入一行str1:"<<endl;

	getline(cin,str1);//对string来讲读入一行 ,直到换行,包括空格

	cout<<"输入str5并读取:"<<endl;

	cin.getline(str5,sizeof(str5),'a');//这里表示当读取到a时停止读取,没有a的话不会停止

	cout<<"第一次读取:"<<str5<<endl;

	cin.getline(str5,sizeof(str5));//第二次读取将会从上一次停止的那里继续读取,但不包括停止的符号
	cout<<"第二次读取:"<<str5<<endl;

	cout<<"输入str3:"<<endl;

	gets(str3);//对字符数组来说,读入时,直到换行结束 ,包括空格

	cout<<"输入str4:"<<endl;

	cin.getline(str4,5); //接受固定个数的字符数组

	cout<<"输入s:"<<endl;

	getchar();//吸收空格

	s=cin.get();//只接收一个字符赋给s

	//cout<<"输入str6:"<<endl;
	//cin.get(str6,6);//接受固定字符 
	cout<<"str1:"<<str1<<endl;
	cout<<"str3:"<<str3<<endl;
	cout<<"s:"<<s<<endl;
	cout<<"str4:"<<str4<<endl;
//	cout<<"str6:"<<str6<<endl;
	return 0;
}

6 string的find()函数:可查找指定字符串指定字符

使用方法:

如在str1中查找str2:str1.find(str2)

返回值为str2第一次在str1中出现的位置。
若希望在特定位置开始查找,可使用 str1.find(str2,pos);//pos就是指定开始查找的str1的位置
如果找不到,则返回值为string::npos ,通过a.find(val)==string::npos来做判断是否查找成功

	string s="abcd aaa bbb";
	string s1="abcda";
	string s2="abcd";
	if(s.find(s1)!=string::npos)cout<<"找到s1了"<<endl;
	if(s.find(s2)==string::npos)cout<<"没有找到s2"<<endl;

7. string转换为字符数组char【】的函数:c_str()函数

附言:有些函数使用时需要传进去字符数组,例如strstr()函数,这时这个函数就显得有用途了

用法:需要使用strcpy()复制函数将转换后的字符串数组复制给另一个新的字符串数组,不可直            接等于。

	string s4= "12345";
	char s5[100];
	strcpy(s5,s4.c_str());
	cout<<s5;
    //这里如果直接令s5=s4.c_str(),会报错

8. atoi()函数:把字符串转换成整型数

头文件: #include <stdlib.h>

注意:这里传进去的是字符数组,遇到string时需要使用c_str()将string型转换为char【】

    char str[10] = "12345";
 	int n = atoi(str);
	string s = "12345";
	int n = atoi(s.c_str());

9.strcat():字符串拼接函数

格式:strcat(char[] str1,char[] str2)

是将str2拼接到str1后边

#include<iostream>
#include<string.h>
using namespace std;
int main()
{ char str1[100],str2[100];
cin>>str1;
cin>>str2;
cout<<str1<<endl;
cout<<str2<<endl;
cout<<strcat(str1,str2);//将str2接到str1后边 
return 0;
 } 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值