c++ 学习笔记归纳 string 类

程序员写代码少不了要与字符串打交道,C++既然给我们提供了这么优良的武器(string 类得意),如果我们不用起来,又怎么能够爆发出我们的洪荒之力呢。以下笔记归纳参考的是北大郭炜和刘家瑛老师的C++课程来进行的。主要是能够方便自己以后回顾知识,如果客官们觉得还将就,也可以尽情的拿去。

string 类是一个类模板实例化出来的模板类。

定义:

typedef basic_string<char> string;

初始化:

string 类的有以下3种初始化方式

1. string s1("hello");

2. string s2(8,'x');

3.string month = "March"。

注意:string 类不提供以字符和整数为参数的构造函数

反例:string error1('u');

    string error2(8);

string 对象的长度可以用成员函数length(),size()读取;

string 支持流读取运算符,例:string obj;cin>>obj;

string 支持getline函数,例:string s;getline(cin,s);

赋值

1.用'='赋值 

2.用assign成员函数复制

全复制:string s1("cat"),s2;s3.assign(s1);

部分复制:string s1("catpig"),s2;s3.assign(s1,1,3);//从s1下标为1的字符开始复制3个字符给s3

3.单个字符复制:s1[2]=s[3]='b';

链接

1.用+运算符链接字符串,例:string s1("good"),s2("morning!");s1+=s2;

2.用成员函数append链接字符串;

a.全连接,例:string s1("good"),s2("morning!");s1.append(s2);

b.部分链接,例:string s1("good"),s2("morning!");s1.append(s2,3,s2.size());//从s2的下标为3开始的到s2.size()的字符串,链接到s1的尾部。

//如果没有字符串没有足够字符,则复制到字符串最后一个字符为止。

访问:

1.用.at(index) 逐个字符的访问;//注意 成员函数at会做范围检查,超出范围则抛异常,而下标运算符不会做范围检查

2.用成员函数substr()访问字符串的子串,例:string s1("hello world"),s2;s2=s1.substr(1,5)//s1下标1开始的5个字符赋值给s2;

比较:

关系运算符(==,<,<=,>,>=,!=) 可以比较字符串之间的大小,返回值都为bool型。

查询:

1.成员函数find(),例:string s1("hello world");s1.find("lo");//从左到右查询"lo"第一次出现的下标位置;

2.成员函数rfind(),例:string s1("hello world");s1.rfind("lo");从右到左查询"lo"第一次出现的下标位置;

3.成员函数find_first_of(),例:string s1("hello world");s1.find_first_of("abcd");//在s1中从左向右查找“abcd”中任何一个字符第一次出现的地方;

4.成员函数find_last_of(),例:string s1("hello world");s1.find_last_of("abcd");//在s1中从左向右查找“abcd”中任何一个字符最后一次出现的地方;

5.成员函数find_first_not_of(),例:string s1("hello world");s1.find_first_not_of("abcd");//在s1中从左向右查找不在“abcd”中的字符第一次出现的地方;

6.成员函数find_last_not_of(),例:string s1("hello world");s1.find_last_not_of("abcd");//在s1中从右向左查找不在“abcd”中的字符第一次出现的地方; 

7.成员函数find(),例:string s1("hello world"); s1.find("ll",2);从s1的下标为2开始查找为"ll"

         

删除:

成员函数erase(),例:string s1("hello world");s1.erase(5);//从下标为5开始的删除

替换:

成员函数replace(),例:string s1("hello world");s1.replace(2,3,"haha");//将s1中下标2开始的3 个字符换成"haha"

插入:

成员函数insert(),例:string s1("hello world");string s2("show");s1.insert(5,s2);//将s2插入到s1下标5的位置

 s1.insert(2,s2,5,3);//将s2中下标5开始的3个字符插入到s1下标2的位置

转换成c语言字符串:

成员函数c_str().

参考视频:北京大学 C++ 程序设计实习 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值