【字符串和字符数组】总结篇—字符串和字符数组的创建和使用函数以及差别
2021/10/4 23:41:25
本文主要是介绍【字符串和字符数组】总结篇—字符串和字符数组的创建和使用函数以及差别,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
本文写C++中字符串的一些常见函数,以及字符数组的常见使用,以及二者的差别。
主要包含字符串string的一些常见函数,比如切割,转换。其中包含了与C语言混合使用的一些操作。
1. 求字符串string和字符数组的长度
主要包含str.length(),str.size(),strlen(s),sizeof(s)/sizeof(s[0])
(1)length和size
C++中求字符串变量string中的字符个数时,使用str.length()和str.size()。
同时,size()函数还可用来求栈和队列中的元素个数。
(2)strlen(s)
C语言中求字符数组中的元素个数,可以使用strlen(s)。但是求数字数组不能用,只能用sizeof(s)/sizeof(s[0])。
(3)sizeof(s)/sizeof(s[0])
可以求(各种类型的)数组,自定义指针结构的元素个数。主要是求数组中的元素个数。
2. string的常见方法
(1)查找字符串字串str.find(s)
查找子串s在str中第一次出现的下标位置,找不到返回-1。
string str="abcdefg"; string s="cd"; cout<<str.find(s)<<endl; 输出: 2
(2)切割字串str.substr(pos, n)
返回字符串中从下标pos开始的长度为n的字串。如果参数只有一个,那么从pos开始到结尾的字串。
(3)插入字串str.insert(pos, n1, str1, pos1, n2 )
在字符串str中,从pos位置开始插入,str1从pos1位置开始长度为n2的字串,插入n1遍。其中,n1和pos1可以没有,表示插入从str1前n2个元素。
同时注意,使用迭代器时,是插入到该位置的前面:
//s.insert(s.it,ch)在s的it指向位置前面插入一个字符ch,返回新插入的位置的迭代器 it = str.insert(str.begin()+5,','); //s.insert(s.it,n,ch)//在s的it所指向位置的前面插入n个ch str.insert (str.end(),3,'.');
(4)扩展字符串str.append(str1, pos, n)
往str后面追加str1串从pos开始的长度为n的字符串。pos和n可以省略,意思为直接将str1缀到str后面。也可以通过+=实现。
(5)替代字符串str.replace(pos, n, str1)
将str中从pos开始的n个字符用str1代替。
3. 格式化字符串sscanf和sprintf
头文件stdio.h。功能类似于scanf和printf,但是从字符串*buffer中输出。此时变量为char数组。
(1)sprintf
用于格式化字符串,将变量打印到字符串中,从而获得变量(一般是数字和字符混合)的字符串形式。
char c[100]; int k=255; sprintf(c,"%d",k); //c="255"
一般用于:进制转换和连接多个字符串(char数组)。
(2)sscanf
将参数str的字符数组根据参数format字符串来转化并格式化数据。
int i; unsigned int j; char input[ ]="10 0x1b aaaaaaaa bbbbbbbb"; char s[5]; sscanf(input,"%d %x %5s",&i,&j,s);
常见用法有:提取指定长度字符串(%5s),提取指定字符集。
注意点:
(1)%s是遇到空格就停止;
4. char *和string相互转换
(1)char *-->string:直接赋值
char a[10]="abdc"; string str=a;
(2)string-->char *:str.c_str()
两种方法:第一种定义const char *ch,可以直接将str.c_str()赋值给char型指针ch;第二种定义普通char *ch,通过函数strcpy(ch, str.c_str())赋值。
string str="abcdefg"; const char *a,*c; char b[20]; a=str.c_str(); c=str.data(); strcpy(b,str.c_str());
注意还有str.data(),这个返回的字符数组不带'\0',str.c_str()带有’\0‘.
这篇关于【字符串和字符数组】总结篇—字符串和字符数组的创建和使用函数以及差别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-12百万架构师第十五课:源码分析:Spring 源码分析:SpringMVC核心原理及源码分析|JavaGuide
- 2025-01-11有哪些好用的家政团队管理工具?
- 2025-01-11营销人必看的GTM五个指标
- 2025-01-11办公软件在直播电商前期筹划中的应用与推荐
- 2025-01-11提升组织效率:上级管理者如何优化跨部门任务分配
- 2025-01-11酒店精细化运营背后的协同工具支持
- 2025-01-11跨境电商选品全攻略:工具使用、市场数据与选品策略
- 2025-01-11数据驱动酒店管理:在线工具的核心价值解析
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide