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

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

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

1. 说明

  前面介绍了处理字符数组char*的C语言专门头文件“string.h”,以及C++中“cstring”。而本文要介绍的“string”头文件是C++专门为字符串实现定义的一个类以及各种函数方法。 
  由于C++标准库定义函数方法都需要表明命名空间std,所以使用的时候记得声明命名空间。 
  这里先稍微介绍一下“string.h”,“cstring”,“string”头文件以及MFC库中CString类的区别。 
  CString说了是MFC中专属类,不作图形界面暂且不用掌握,实际使用和“string”头文件string类很相似。 
  “string.h”头文件中则包含的是C语言标准库定义的,用来处理字符数组char*的函数方法。 
  “cstring”头文件实际上只是在一个命名空间std中包含了“string.h”,这是因为C++要减少名称污染,当遇到用户自己定义了名称相同的函数,能够与标准库std中函数区分开。 
  而“string”是包含了C++专门定义一个处理字符串的类string的头文件。类来替代字符数组处理字符串当然有很多优势,这里不再细说。

2. 笔试必掌握内容 

  string因为是类,有别于数据类型概念。在使用的时候和其它类一样,首先需要实例化对象,然后通过对象调用类中各种处理字符串的函数方法。下面介绍笔试需要掌握的string类对象的各种方法函数使用。 
2.1 初始化 
  string初始化有以下几个方法,如下程序:

char *pl = "Hello!"; string a = "World yeyey";//类中重载了赋值符号,可以直接赋值字符串常量  string b = pl;           //字符串数组赋值初始化string str("abc");       //调用有参构造函数赋值string c(pl);            //同上string d = c;            //赋值符号重载string e (5,'a');        //n个字符初始化


2.2 重载运算符 
  string类中重载了很多操作符,例如: 
  赋值“=,+=”、比较操作符“>, <, >=, <=, ==, !=”,移位操作符“<<, >>”,连接“+”等等。 
  例如:

e += a;    //e的结果为:"aaaaaWorld yeyey"


2.3 访问字符串字符 
  主要有三种方法,类似数组元素访问符[ ]、类方法at( )、迭代子iterator等。详细使用如下:

char al    = a[1];    //访问第二个元素,'o'

char alNew = a.at(0); //访问第一个元素,‘W’string::iterator i;for(i=a.begin();i<a.end();i++)

    cout<<*i;         //从头打印字符串a,迭代子可以看成就是指针,通过指针符间接访问


2.4 字符串查找/增加/插入/交换等操作

e.append(a);        //字符串a附加到字符串e尾部,类似“+”操作符

 

e.empty();          //判断字符串e是否为空,空则返回1,否则返回0

 

e.swap(a);          //交换字符串对象e和a的值

char nzArr[20]={0};

e.copy(nzArr,5,0)   //拷贝字符串e从第0(默认也为0)索引到第五给字符数组

int i = a.find('W');//找到对应字符再字符串a中最先出现的索引位


  在求字符串长度上,因为string有双重身份,一是代替传统的C字符串,所以应该针对C中的strlen,给出相应的函数length( )。另一个身份是可以用作STL容器,所以要按照STL容器的惯例给出size( )。

e.size();e.length();   //两个都是求字符串e的长度,使用上没有区别


  上面操作是字符串自处理,下面是通过字符串各种操作再赋给新的字符串中。例如:插入,截取子字符串,删除等。

string strInst = e.insert(3,"vvvvvv");//在e字符串3索引位上插入一个字符串,并赋给新字符串对象string strSub  = e.substr(0,size(e)-5);//取(第一个参数默认为0,也可以不写)0至倒数第5个字符string strEra  = e.erase(0,size(e)-5);//删除对应段字符赋给新字符串


2.5 字符串输入输出操作

string str;

cin>>str;        //输入,取字符串遇空格停

cout<<str<<endl; //输出

getline(cin,str);//获得一行字符串


2.6 字符串比较大小

string str1="123";string str2="123";if(str1.compare(str2)==0)

    cout<<"equal"<<endl; // 如果两个字符串相等则输出“equal”

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言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小时内训课程