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的前5位字符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字符串查找函数:strstr

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演示:

全部评论

相关推荐

不愿透露姓名的神秘牛友
03-28 13:48
hory权:校招vip纯神人了,还说自己是什么师范大学的
点赞 评论 收藏
分享
小厂面经,也是我的处女面(30min)1.自我介绍2.spring&nbsp;boot的自动装配原理(好多类和接口的单词都忘了全称是啥了,就说了记得的单词,流程应该说对了吧)3.有用过redis吗?主要是用在实现什么功能(说了技术派用redis的zset来实现排行榜)5.有了解过Redisson吗?讲一下对于分布式锁的了解以及在什么场景下应用(说了秒杀场景)6.对mysql有了解吗?包括它的索引优化和创建(把想起来的全说了)7.了解设计模式吗?比如单例模式,为什么要使用单例模式,它的优点是什么(昨天刚看的设计模式)8.工厂模式有了解吗?主要的使用场景是?(也是昨天刚看的)9.场景题:有7个服务器,需要在早上十点定时的向数据库中的用户表中的用户发短信,如果做到发送的消息不重复,且如果发送失败了需要知道是到哪个用户失败了,这样下次就直接从这个用户开始(我答了用spring&nbsp;task来实现定时,用分布式锁来保证只有一份服务器可以发送消息,用消息队列来存储消息,然后用消息确认机制来保证错误信息的记录,以及在数据库或者业务层面完成消息消费的幂等性)10.场景题:如果在系统启动的时间就将数据库的所有用户相关的信息都读到一个hashmap中(这个没啥思路,没答好)27届的投了一个星期终于有一个面试了,大部分公司都只招26的
inari233:已oc,拒了
查看9道真题和解析
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务