C++入门之stl六大组件--String库函数的介绍

这篇具有很好参考价值的文章主要介绍了C++入门之stl六大组件--String库函数的介绍。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

文章目录

一、为什么学习string类

1.C语言中的字符串

二、标准库中的string类

1.string类

2.string类的常用接口

1.string类对象的常见构造

2.string类对象的容量操作

3.string类对象的访问以及遍历操作

4.string类对象的修改操作

5.string类的非成员函数

总结

 


一、为什么学习string类

1.C语言中的字符串

C语言中,字符串是以\0结尾的一些字符集合,为了操作方便,C库中提供了一些str系列的库函数,但是这些库函数是与字符串分离开的,不太符合oop的思想,而且底层空间需要用户自己管理,如果不注意可能会访问越界。

二、标准库中的string类

1.string类

在使用string类的时候,必须包含#include头文件以及using namespace std;

1.string类是表示字符串的字符串类

2.该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作

3.string再底层实际是:basic_string模板类的别名

4.不能操作多字节或者变长字符的序列

2.string类的常用接口

1.string类对象的常见构造

函数名称 功能说明
string() 无参构造,构造空的string类对象,即空字符串
string(const char *s) 用c-string来构造string类对象
string(const string&s) 拷贝构造,传入一个string类
string(size_t n,char c) string类对象中包含n个字符c

使用方法:

string s1; //构造一个空的string类对象s1
string s2("hello string"); // 用c字符串构造string类对象s2
string s3(s2) //拷贝构造s3

2.string类对象的容量操作

函数名称 功能说明
size 返回字符串有效字符长度
length 返回字符串有效字符长度,作用同size
capacity 返回空间总大小
empty 检测字符串释放为空串,是返回true,否则返回false
clear 清除有效字符,但是不改变底层空间的大小
reserve 为字符串预留空间
resize 将有效字符个数改成n个,多出的空间用字符c填充

使用方法:

void test()
{
    string s("hello cplusplus");
    cout<<s.size()<<endl;
    cout<<s.capacity<<endl;
    
    //将s中的字符串清空,清空只是将size清0,不改变底层空间的大小
    s.clear();
    
    //将s中的有效字符增加到20个,多出位置用'a'填充
    s.resize(20,'a');

    
    //将s中有效字符增加到15个,多出位置用缺省值\0填充
    
    s.resize(15);

    string s1;
    
    s1.reserve(100); 
}
  • 使用reserve的情况:可以预留n个空间,避免扩容带来的开销。当reserive参数小于string的底层空间总大小时,reserver不会改变容量的大小

3.string类对象的访问以及遍历操作

函数名称 功能说明
operator[] 返回pos位置的字符,const string类对象调用
begin+end begin获取一个 字符的迭代器+end获取最后一个字符的下一个位置的迭代器
rbegin+rend rbegin获取最后一个字符的下一个位置的迭代器+rend获取第一个字符的迭代器
范围for 一种语法糖,c++11中新的遍历方式

使用方法:

void test()
{
    string s("hello cplusplus");
    
    //1.for+operator[]
    for(int i = 0; i<size;++i)
    {
        cout<<s[i]<<endl;
    }

    //2.迭代器  暂时可以将迭代器看成一个指针
    string::iterator it = s.begin();
    while(it!=s.end())
    {
        cout<<*it<<endl;
        ++it;
    }

    //反向迭代器rbegin
    auto rit = s.rbegin();
    while(rit!+s.rend())
    {
        cout<<*rit<<endl;
        ++rit;
    }

    //3.范围for 底层也是用的迭代器
    for(auto ch:s)
    {
        cout<<ch<<end;
    }

4.string类对象的修改操作

函数名称 功能说明
push back 在字符串后面增加一个字符
append 在字符串后面增加一个字符串
operator+= 在字符串后面增加一个字符串str
c str 返回c格式的字符串
find+npos 从字符串pos位置开始往后找字符c,返回该字符在字符串中的位置。npos是string里的一个静态成员变量,默认值为-1
rfind 从字符串pos位置开始往前找字符c,返回该字符在字符串中的位置
substr 在str中从pos位置开始,截取n个字符,然后将其返回

使用方法:

void test()
{
    string str("hello");
    str.push_back(' '); //追加一个空格
    str.append("world");
    str +='b';
    str += 'it';


    //通过rfind获取file的后缀 从后往前找
    string file("test.cpp");
    size_t pos = file.rfind('.');
    string suffix(file.substr(pos,file.size()-pos)); //获取后缀给suffix 获取子串,从pos位置向后找,找size-pos个长度 
    
    
       //取出url的域名
      //协议+ 域名 + 资源
      string url("http://www.cpluplus.com/reference/string/string/find/");
      size_t start = url.find("://");
      if(start == npos)
        return ; //无效域名
      start+= 3;
      size_t finish = url.find('/',start);  
      string address = url.substr(start,finsh - start); //取出中间的子串

}
    

5.string类的非成员函数

函数 功能说明
operator+ 使用传值返回,深拷贝效率较低
operator>> 输入运算符重载
operator<< 输出运算符重载
getline 获取一行字符串
relational operators 大小比较

总结

本章主要介绍了string类以及string类的一些接口函数文章来源地址https://www.toymoban.com/news/detail-596757.html

到了这里,关于C++入门之stl六大组件--String库函数的介绍的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++入门到精通】C++入门 —— string类(STL)

    目录 一、STL简介  1.STL是什么 2.STL的内容  3.STL的使用前提 二、string类 1.string类 是什么 2.string类的特点和操做 ⭕构造和初始化 ⭕字符串大小和容量 ⭕字符访问和修改 ⭕字符串连接和拼接 ⭕子串操作 ⭕字符串比较 ⭕字符串修改 ⭕获取字符的ASCII码 ⭕字符串大小写转换:

    2024年02月14日
    浏览(26)
  • 【C++】:STL——标准模板库介绍 || string类

    STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且 是一个包罗数据结构与算法的软件框架 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商

    2024年02月05日
    浏览(45)
  • 【C++】STL——string的模拟实现、常用构造函数、迭代器、运算符重载、扩容函数、增删查改

    string使用文章   这里我们 实现常用的第四个string(const char* s)和析构函数     拷贝构造函数实现:   在堆上使用new为当前对象的成员变量_str分配内存空间,大小为s._capacity + 1字节,即字符串的容量加上一个结束符\\0的空间。   我们使用深拷贝而不是浅拷贝,

    2024年02月15日
    浏览(34)
  • 【C++入门】STL容器--vector底层数据结构剖析

    目录  前言  1. vector的使用       vector的构造  vector迭代器  vector空间相关的接口  vector 功能型接口  find  swap  insert  erase 2. vector内部数据结构剖析 reserve  push_back和pop_back size、capacity、empty、operator[ ];  insert和erase resize swap  拷贝构造和赋值重载 构造函数补充  迭代器

    2024年01月25日
    浏览(38)
  • C++ STL 标准模板库介绍与入门

    目录 1、概述 1.1、C++ 标准库 1.2、Boost库 2、STL 版本 2.1、HP 原始版本

    2024年02月05日
    浏览(49)
  • 【C++】STL——queue的介绍和使用、queue的push和pop函数介绍和使用、queue的其他成员函数

    queue的介绍   1.队列是一种容器适配器,专门用于在FIFO上下文(先进先出)中操作,其中从容器一端插入元素,另一端提取元素。   2. 队列作为容器适配器实现,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从队尾入

    2024年02月06日
    浏览(29)
  • 【c++】STL--string

            最开始我们学习c语言的时候,我们发现刷题或者写代码都是比较麻烦的,如果说用c语言造一辆车,那么我需要用c语言先把轮子造好--各个零件,当我们造好之后再组装。那么c++则是造好了轮子,只需要我们组装就好了。这里的的STL里有各个组件,我只要熟悉的掌握

    2024年02月03日
    浏览(38)
  • C++ STL string类

    目录 一.为什么学习string类 (1) C语言中的字符串 (2)标准库里面的string类 二. string类的常用接口说明 (1)string类对象的常见构造 (2)string类对象的容量操作 1.size(),length(). 2. capacity() 3.empty()  4.clear()  5.reserve()  6.resize() (3)string类对象的访问及遍历操作  1.operator[ pos

    2024年02月13日
    浏览(25)
  • 【C++】STL——容器适配器priority_queue(优先级队列)详解 及 仿函数的介绍和使用

    这篇文章我们接着上一篇的内容,再来学一个STL里的容器适配器—— priority_queue (优先级队列) 1.1 priority_queue的介绍 我们上一篇文章学了 queue (队列),那优先级队列也是在 queue 里面的: 和 queue 一样, priority_queue 也是一个容器适配器,那他和 queue 有什么区别呢?我们一

    2024年02月07日
    浏览(35)
  • [C++]六大默认成员函数详解

    ☃️个人主页:fighting小泽 🌸作者简介:目前正在学习C++和Linux 🌼博客专栏:C++入门 🏵️欢迎关注:评论👊🏻点赞👍🏻留言💪🏻 如果一个类中什么都没有,简称空类。 但它并不是什么都没有,任何类在什么都不写的情况下, 编译器会自动生成以下6个默认成员函数。

    2024年02月04日
    浏览(32)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包