C/C++知识点头文件系列(四)——string.h cstring
小标 2018-06-15 来源 : 阅读 700 评论 0

摘要:本文主要向大家介绍了C/C++知识点头文件系列的string.h cstring,通过具体的实例让大家了解,希望对大家学习C/C++知识点有所帮助。

本文主要向大家介绍了C/C++知识点头文件系列的string.h cstring,通过具体的实例让大家了解,希望对大家学习C/C++知识点有所帮助。

1. 说明

  “string.h”和ctring都是用来定义处理字符数组char*函数的头文件,后者只不过是C++语言为了统一标准命名空间管理而建立另一个管理函数的头文件,内容都差不多,稍有改进。 
  C/C++中关于字符串头文件有很多,这里先稍微介绍一下“string.h”,“cstring”,“string”头文件以及MFC库中CString类的区别。 
  CString说了是MFC中专属类,不作图形界面暂且不用掌握,实际使用和“string”头文件string类很相似。 
  “string.h”头文件中则包含的是C语言标准库定义的,用来处理字符数组char*的函数方法。 
  “cstring”头文件实际上只是在一个命名空间std中包含了“string.h”,这是因为C++要减少名称污染,当遇到用户自己定义了名称相同的函数,能够与标准库std中函数区分开。 
  而“string”是包含了C++专门定义一个处理字符串的类string的头文件。类来替代字符数组处理字符串当然有很多优势,这里不再细说。

2. 笔试必掌握函数

①. strlen 
  计算字符数组长度,到字符串结束符’\0’即停止。

char nzArr[100] = "abcdef";int nLen = strlen(nzArr); //结果为6,并不是100,和分配数组内存大小无关


②. strcpy/strncpy 
  字符数组拷贝函数,如下:

char nzArr[100]="abcdef",nzBuf1[100],nzBuf2[100];strcpy(nzBuf1,nzArr);       //字符数组后者拷贝给前者strncpy(nzBuf2,nzArr,3);    //字符数组后者拷贝3个字符给前者int nLen = strlen(nzBuf2); //没有意义


  strncpy是拷贝n个字符到前字符数组中,但是由于没有初始化nzBuf2,nzArr前3个字符也没有结束符,所以计算字符数组的长度没有实际意义。 
③. strcat 
  拼接函数,用来将后一个字符数组内容加载在前一个字符数组的后面,并且会自动去除前一个字符数组最后的字符结束符’\0’。

char nzArr[100]="abcd",nzBuf[100]="DDDD";strcat(nzArr,nzBuf);  //nzArr结果为“abcdDDDD”,注意不要超过字符数组空间大小


④. strset 
  设定字符数组全为某一字符,如果存在‘\0’结束符,遇结束符停止赋值。

char nzArr[100]="abcd";strcat(nzArr,'g');  //nzArr结果为“gggg”,如果未初始化,则100个空间都为'g'


⑤. memset 
  与strset类似,赋值字符数组指定字符,但可以指定个数。

char nzArr[100]="abcd";memset(nzArr,'g',sizeof(nzArr));  //nzArr中全为0,该函数是空间操作,不遇'\0'停止

⑥. strcmp/strcmpi/strncmp 
  都是字符串比较函数,比较前一字符数组比后一字符数组按Ascii码顺序的大小。如果前者大,则得到结果大于0,相等则为0,前者小则小于0. 
  strcmpi是不区分大小写比较,而strncmp可以指定比较前多少个字符串的大小。

char nzArr[10]="abc",nzBuf[10]="abC";int nRel  = strcmp(nzArr,nzBuf); //结果为1int nRel1 = strcmpi(nzArr,nzBuf);//结果为0int nRel2 = strncmp(nzArr,nzBuf,2);//结果为0


⑦. strstr/strchr 
  都是查找第二个参数第一次出现在第一个字符数组的位置,前者是查找字符数组,而后者是字符。但是注意返回,返回的是参数出现的地址,需要赋给char*指针来存储,而不是一个索引。

char nzArr[10] ="ababcde",nzBuf[10]="abc";char* nzCount  = (char*)malloc(sizeof(char)*10);char* nzCount1 = (char*)malloc(sizeof(char)*10);//结果分配空间memset(nCount,0,sizeof(nCount));   //赋初值memset(nCount1,0,sizeof(nCount1)); //防止未匹配到指定字符或字符数组,而成为野指针

nzCount = strstr(nzArr,nzBuf);     //返回为'abcde'

nzCount1 = strstr(nzArr,'c');      //返回为'cc'

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程