字符串处理函数操作字符数组

字符串处理函数操作字符数组

常用字符串操作函数如下所示:

 

Strcmp函数用法

#include <iostream>  
#include <string>  
using namespace std;  
  
int main()  
{  
  
    char src[]="hello", dest[]="world";  
  
    int strcompare = strcmp(dest, src);  //将“hello”与“world”相比较,当dest > src, return 1; 当dest < src, return -1; 当dest = src, return 0  
    cout << strcompare << endl;  
}

 

字符串比较规则:

在ASCII码值中,数字的编码是48-57,大写字母的编码是65-90,小写字母的编码是97-122。其实,就是

在ASCII码值中,数字的编码是48-57,大写字母的编码是65-90,小写字母的编码是97-122。其实,就是按照字母,数字等等字符在ASCII码值中的排列顺序的先后。

下图为ASCII简单的一部分编码表:

 

Strcat函数的用法

#include <iostream>  
#include <string>  
using namespace std;  
  
int main()  
{  
  
    char src[50]="hello", dest[]="world";  
  
    strcat(sre, dest);  //把“world"连接到“hello”后面,该函数调用格式“strcat(被扩充字符串, 被添加字符串)”  
    cout << dest << endl;  
} 

 

注意:被扩充字符串src数组的空间必需够用,否则会导致内存溢出。

如何判断src数组的空间是否够用?

我们回忆一下:字符串与字符型数组的区别——字符串转为字符型数组后应在结尾添加’\0’作为字符串结尾的标志,而且’\0’占一个bit的空间(因为数组类型时char类型)。因此,src扩充后应该占用5+5+1(当添加字符串时,被扩充字符型数组src中的’\0’被取消,这是为了迎接新字符段的加入)。

附:字符串在字符型数组中的存储方式:

 

该函数调用格式:

Strcat(char*destination, const char* source)这个表述太复杂,改进一下:Strcat(被扩充字符数组的数组名,添加字符数组的数组名)。函数返回值为“被扩充字符型数组的数组名(地址)”,为啥返回地址呀?对地址进行操更加方便快捷。

Strcpy函数的用法

该函数的定义原型为:char * strcpy( char destination[], const char source[]);
相关的说明在这里:http://www.cplusplus.com/reference/cstring/strcpy/
其作用就是将第2个参数的字符串拷贝到第一个参数的字符数组中,所以要保证第1个参数的字符数组大小够用。注意:第2个参数的结束符 '\0' 也会拷贝过去哦。

#include <iostream>  
#include <string>  
using namespace std;  
  
int main()  
{  
  
    char src[50]="hellohellohello", dest[]="world";  
  
    strcpy(src, dest);  //把“world"替换“hello”  
    cout << dest << endl;  
} 

 

这里有个疑问:是不是把缓冲区内的src数组中的字符全部刷新取消,再填入”world”?

No,不是的,看如下调试:

 

程序只是把src字符数组内的前五位替换为world,再在最后一位填入’\0’表示字符串已结束,此时在从缓存区内src位置读取字符,只能读取到首个字符到’\0’的所有字符,即’world’。

Strlen函数的用法

#include <iostream>  
#include <string>  
using namespace std;  
  
int main()  
{  
  
    char des[50] = "hello";  
    int len = strlen(des);  
    cout << "len = " << len << endl; // 结果为5,计算数组真实长度时不包括'\0'  
}  

 

该函数的定义原型为:int size =strlen (const char str[])

Strchr函数的用法

#include <iostream>  
#include <string>  
using namespace std;  
  
int main()  
{  
  
    char des[] = "hello";  
    char*place = strchr(des,'e'); // 计算'e'单个字符的地址,这个地址时绝对地址就是'e'在缓冲区内的地址,我们要转化为相对地址  
    cout << "place = " << place-des+1 << endl; // 相对地址为2  
} 

 

Strstr函数的用法

#include <iostream>  
#include <string.h>  
  
int main()  
{  
    char str[] = "This is a simple string";  
    char * pch;  
    pch = strstr(str, "simple"); // 求“simple”的第一个字符's'在字符数组中出现的绝对地址  
    std::cout << pch - str + 1 << std::endl; // 将“simple”的第一个字符's'在字符数组中出现的绝对地址转化为相对地址(结果为11)  
    return 0;  
} 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

肥肥胖胖是太阳

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值