c++常用字符串函数及其实列

前言:

哈哈,新手小白一个,看了北大郭炜老师的课来写的,主要介绍了常用字符串的用法,并没有深度刨析,本人也不懂,哈哈。看大佬的文章总感觉难以理解(我太弱了)。个人觉得举实例便于我等蒟蒻理解(手动滑稽),大佬请指教或绕行,

以下函数头文件均为#include<cstring>

1字符串拼接函数:strncat

1作用:进行字符串的拼接
2实列用法:strncat(s1,s2,3);//将s2的前3位字符拼接到s1的尾部
3图片实列演示:
在这里插入图片描述图中将s2的前三个字符“abc",拼接到了s1末尾,所以输出s1,结果为”12345abc“
4代码:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    char s1[100]="12345";
	char s2[100]="abcdefg"; 
	strncat(s1,s2,3);//将s2的前3位字符拼接到s1的尾部 
	cout<<" 1)"<<s1<<endl;

	return 0;
} 

2字符串拷贝函数:strncpy

1作用:将一个字符串(s1)的内容拷贝到另一个字符串(s2)中,并将s2的前n个字符覆盖
2用法实列:## 1)若拷贝的字符数小于或者等于s1的长度,则拷贝时不拷贝s1结尾的 \0 ## 2) 若拷贝的字符数大于于s1的长度,则拷贝时拷贝s1结尾的 \0 ,则在输出时输出的结果为s2,因为碰到\0就结束了啊(此处的s1,s2和下面的s1和s2不同)

#include<cstdio>
#include<cstring>
using namespace std;
char s[100]={"acvbgehejk"};
int main()
{
	char s[100];
    char s1[100]="123456";//长度为6 
	char s2[100]="abcdefg";//长度为7 
	char s3[100]="ABCDE";//长度为5 
	strncpy(s1,s3,5);//对于括号右边的数值小于s3长度的情况下,将s3的前3位字符copy到s1,不拷贝结尾的"\0"若s1那个位置已经有了字符则将它替换 
	cout<<" 1)"<<s1<<endl; 
	strncpy(s2,s3,6);//对于括号右边的数值大于s3长度的情况下,将s3的全部类容及末尾的"\0"拷贝到s2,所以输出s2看到的结果是s3 ,因为遇到\0就结束了啊 
	cout<<" 2)"<<s2<<endl; 
	return 0;
} 

3图片实列演示:
在这里插入图片描述第一个输出因为拷贝的字符数等于s3的长度,所以不拷贝结尾的\0,
第二个输出因为拷贝的字符数大于s3的长度,所以拷贝结尾的\0,输出s2时,只能输出ABCDE了,因为遇到\0就结束了

3字符串比较函数:strcmp

1作用:比较两个字符串的前n个字符,大于输出正数,等于输出0,小于输出负数
2用法实列:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[100]={"acvbgehejk"};
int main()
{
    char s1[100]="12345";
	char s2[100]="ABCDE";  
	cout<<" 4)"<<strncmp(s1,s2,3)<<endl;//比较s1和s3的前三个字符 ,若s1的大于s2则输出正数,相等就输出0,小于输出负数 
	return 0;
} 

3演示:
在这里插入图片描述大于
在这里插入图片描述等于在这里插入图片描述小于

4字符串查找函数 :strchr和strrchr

1作用:查找字符在字符串中第一次出现的位置和最后出现的位置
2用法实列:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
	char s1[100]="ABCDE"; 
	char *p =strchr(s1,'B');//指针指向s1中B出现的那个位置
	if(p!=NULL) 
	   cout<<p-s1<<","<<*p<<endl;//输出B在s1中的下标
	else
	  cout<<" 5)Not Found"<<endl;
	return 0;
} 
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
	char s1[100]="ABCDEB"; 
	char *p =strrchr(s1,'B');//指针指向s1中B出现的那个位置
	if(p!=NULL) 
	   cout<<p-s1<<","<<*p<<endl;
	else
	  cout<<" 5)Not Found"<<endl;
	return 0;
} 

3演示:
在这里插入图片描述
在这里插入图片描述

5字符串查找函数:

1作用:查找字串第一次在字符串中出现的位置
2用法实列:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[100]={"acvbgehejk"};
int main()
{
    char s1[100]="12345";
	char *p =strstr(s1,"34");//指针指向s1中B出现的那个位置
	 if(p!=NULL) 
	 {
	 	cout<<" 6)"<<p-s1<<","<<p<<endl;//这里输出p会将所查找字符的后面字符也输出
	  }  
	  else
	  {
	  	cout<<" 6)Not Found"<<endl;
	  }
	return 0;
} 

3演示:
在这里插入图片描述

6字符串分割函数:strtok

1作用:以指定的分隔符把字符串分割
2用法实列:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
char s[100]={"acvbgehejk"};
int main()
{
   char str[]="- This,a sample string.";
   char *p=strtok(str," ,.-");//注意逗号前面有一个空格哦 
   while(p!=NULL)
   {
      	cout<<p<<endl;
      	p=strtok(NULL," ,.-");//后续调用,第一个参数必须是NULL 
   } 
	return 0;
} 

3演示:
在这里插入图片描述

7字符串类型转实数类型函数:atof

1作用:将字符类型的数字转换成实数类型
2用法实列:

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    char s[100]="123.45ab";
	double d=atof(s);
	cout<<d<<endl; 
	return 0;
} 

3演示:
在这里插入图片描述

发布了1 篇原创文章 · 获赞 2 · 访问量 37
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 数字20 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览