• C++:string的模拟实现


    • 引言: 为什么要有string类型, 就使用字符数组表示字符串不行吗?
      • 原因: 使用字符数组描述文本信息, 无法确定开多大空间, 开多了浪费,开少了不够用
      • 使用string封装:
        • 扩容机制:减少了空间的浪费
        • 各种接口:方便修改等操作

    string的使用

    • 容量相关
      • size:获取字符个数,不包含\0 (C语言规定字符串以\0结尾,C++通过size知道其结束位置)
      • capacity:获取容量
      • reserve: 扩容, 不改变size,不会缩容
      • resize: 扩容, 改变size,不会缩容  +  可以指定字符初始化
    • 运算符重载
      • string常用 +, +=
      • string对象可以支持>, < ,==,的比较
      • []
    • 其它
      • find: 查找指定的字符,(npos: -1, 表示未找到的情况)
      • substr:裁剪字符串
      • replace:替换指定的字符
      • to_string:数字转字符
      • stoi:字符串转数字
    • iostream
      • cin>>  : 遇到' '或'\n'就停止
      • getline: 遇到'\n'停止
      • 重载>>:定义一个buffer往buff中写(1)当满了就写进s(2)读到' '或'\n'且buff中有数据就写进s.这样可用减少频繁的扩容,减少空间的浪费

    string的简单实现

    默认成员函数: 拷贝构造与赋值--对构造函数的复用 + 利用对象管理资源

    string的访问: [], 迭代器, c_str

    string的容量: reserve, resize等 -- size,capacity的修改

    string的修改: 增删改查 -- 对容量的检查, 数据的挪动, str函数的复用

    运算符重载: str函数的复用

    代码: String

  • 相关阅读:
    opensbi firmware源码分析(1)
    [mockjs]Mock使用过程中的坑
    SSM框架-获取容器的方式
    Windows服务器被入侵后如何实现排查工作,应该从那几方面入手,排查什么内容
    高效IO模型
    css 动态点击效果
    VUE3-工作笔记-06
    【JavaScript】一文了解JS的闭包
    KV系统大比拼
    LeetCode.101. 对称二叉树
  • 原文地址:https://blog.csdn.net/m0_70402487/article/details/132892396