• string的简单操作


    目录

    string的接口说明

    构造

    constructor

    operator=

    迭代器操作

    begin( )和end( )

    rbegin( ) 和 rend( )

    范围for和迭代器的关系

    范围for

    迭代器

    容量

    size

    lengtn

    max_size

    resize

    capacity

    reserve

    clear

    empty

    string类的元素访问

    operator[ ]

    at

    front()

    back()

    string类对象的修改器(Modifiers)

    operator+=

    append

    ​编辑

    ​编辑

    push_back

    insert

    erase

    swap

    pop_back

    string类对象的操作函数(operations)

    c_str

    data()

    copy()

    find(),rfind()find_first_of()、find_last_of()、find_first_not_of()、find_last_not_of()

    substr

    compare()

    string类对象的非成员函数和npos

    npos

    operator+(重载运算符+)

    关系运算符(Relational operators)

    getline()


    string是一个字符序列的类

    string的接口说明

    构造

    constructor

    operator=

    迭代器操作

    begin( )和end( )

    begin() 函数返回一个指向字符串首字符的迭代器,而 end() 函数返回一个指向字符串末尾后一个字符的迭代器(末尾后的一个位置)

    rbegin( ) 和 rend( )

    这里的string::reverse_iterator可以用auto代替

    rbegin() 函数返回一个指向字符串最后一个字符的逆向迭代器,而 rend() 函数返回一个指向字符串首字符前一个位置的逆向迭代器

    范围for和迭代器的关系

    范围for循环(Range-based for loop)和迭代器(Iterators)是 C++ 中两种不同的用于遍历容器或可迭代对象的方式。它们在语法和用法上有一些区别,但本质上都是用来迭代访问容器或序列中的元素

    范围for

    迭代器

    容量

    size

    字符串长度

    lengtn

    max_size

    字符串的最长长度

    resize

    capacity

    字符串的容量大小

    reserve

    扩展字符串的容量

    clear

    使用 clear() 函数会将字符串对象的内容清空,即将其长度设置为 0,但并不会释放内存或缩小容量,它会将字符串对象变为空字符串,等效于给字符串赋值一个空字符串

    empty

    empty() 函数返回一个 bool 类型的值,如果字符串对象为空,则返回 true,否则返回 false

    string类的元素访问

    operator[ ]

    operator[] 函数用于访问字符串中指定位置 pos 处的字符。返回一个引用,允许您读取或修改该位置上的字符。如果使用 const 修饰符,则表示对字符串进行只读访问

    at

    at() 函数与 operator[] 类似,也用于访问字符串中指定位置 pos 处的字符。不同之处在于,at() 函数会检查索引是否有效,如果索引超出字符串范围,则抛出 std::out_of_range 异常

    front()

    front() 函数用于获取字符串的第一个字符

    back()

    back() 函数用于获取字符串的第一个字符

    string类对象的修改器(Modifiers)

    operator+=

    += 运算符是字符串的连接操作符,也称为字符串的拼接运算符。使用 += 运算符,您可以将一个字符串连接到另一个字符串的末尾,从而实现字符串的拼接

    basic_string& operator+=(const basic_string& str);

    basic_string& operator+=(const charT* s);

    basic_string& operator+=(charT ch);

    append

    append() 函数用于在字符串的末尾添加字符或字符序列,从而实现字符串的拼接

    push_back

    在字符串后面插入一个字符

    insert

    insert() 函数用于在指定位置插入字符或字符序列,从而改变字符串的内容

    erase

    erase() 函数用于从字符串中删除指定位置的字符或字符序列,从而修改字符串的内容

    swap

    swap() 函数没有参数,它将调用它的字符串对象与另一个字符串对象进行内容交换

    直接改变指针指向

    pop_back

    pop_back() 函数没有参数,它只需调用它的字符串对象,就会将最后一个字符从字符串中删除

    注意的是,使用 pop_back() 之前,应该确保字符串的长度不为零,否则会引发未定义的行为。在调用 pop_back() 之前,通常需要检查字符串是否为空

    string类对象的操作函数(operations)

    c_str

    这个函数返回一个指向以 null 结尾的字符数组(C 字符串)的指针,表示当前字符串的内容

    data()

    这个函数返回一个指向字符数组的指针,表示当前字符串的内容。与 c_str() 类似,但 data() 不一定以 null 结尾

    copy()

    size_type copy(charT* dest, size_type count, size_type pos = 0) const;

    这个函数从当前字符串中复制 count 个字符到指定位置 pos 开始的字符数组 dest

    find(),rfind()find_first_of()、find_last_of()、find_first_not_of()、find_last_not_of()

    这些函数用于在当前字符串中搜索指定的字符或子字符串,并返回找到的第一个匹配位置或位置偏移

    substr

    basic_string substr(size_type pos = 0, size_type count = npos) const;

    这个函数返回一个新的字符串,包含从位置 pos 开始的 count 个字符的副本

    局域网

    compare()

    int compare(const basic_string& str) const noexcept

    这个函数用于比较当前字符串与另一个 std::string 对象 str 的大小关系

    string类对象的非成员函数和npos

    npos

    npos 是 std::string 类中的一个静态常量成员,用于表示无效或未找到的位置。它是一个特殊的 std::string::size_type 类型的常量,通常被定义为 std::string::npos,其值在不同的编译器和实现中可能不同,但通常被设为 -1 或一个非常大的值,用于表示在字符串中未找到指定的子串或字符。

    npos 主要用于字符串查找操作,比如在使用 find()、rfind()、find_first_of()、find_last_of()、find_first_not_of()、find_last_not_of() 等成员函数时,当查找失败或没有找到指定的子串或字符时,这些函数通常会返回 std::string::npos 来表示无效的位置。

    注意:npos 的值是一个非常大的无符号整数,因此在比较 std::string::size_type 类型的值时,应使用无符号类型的比较方式,避免可能出现的错误。比如使用 pos != std::string::npos 来判断是否找到了指定的子串或字符

    operator+(重载运算符+)

    这个函数模板用于将两个 std::string 对象进行字符串连接,返回一个新的 std::string 对象,包含两个原始字符串的内容

    关系运算符(Relational operators)

    这些函数模板用于对 std::string 对象进行大小比较。可以通过这些运算符对两个字符串进行逐个字符的比较,从而确定它们的大小关系

    getline()

    这个函数模板用于从输入流中读取一行内容,并将其存储到字符串 str 中,直到遇到指定的分隔符 delim

  • 相关阅读:
    成都手机网站设计要点有哪些
    基于 SpringBoot 的智慧养老平台,附源码、教程
    一文了解GCC(GNU C)语法
    Ansible自动化运维工具
    Kafka 安装教程和基本操作
    第十五届蓝桥杯模拟赛(第一期)
    常见算法设计与分析的简单C++代码实现(排列、二分法搜索、Dijkstra算法、元素换位、单调子序列、硬币问题、运动员最佳匹配问题)
    勤奋,专注,控制自己
    编程段子│只有程序猿才能看懂的搞笑段子
    小区疫情管理系统
  • 原文地址:https://blog.csdn.net/m0_61381297/article/details/134355850