【字符串和字符数组】总结篇—字符串和字符数组的创建和使用函数以及差别

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‘.



这篇关于【字符串和字符数组】总结篇—字符串和字符数组的创建和使用函数以及差别的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程