C++STL入门:string的基本使用小笔记

简介: C++STL入门:string的基本使用小笔记

目录

一.string类简介

二.string类的常用成员接口

1.string类对象的构造函数接口

  1. string类对象的容量操作接口

    std::string::size

           std::string::length
    
           std::string::empty
    
           std::string::clear
    
           std::string::resize
    
           std::string::reserve
    

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

                        std::string::operator[]
  1. string类对象中字符串的修改操作接口

    std::string::operator+=

一.string类简介
string是表示字符序列的类(只适用于单字节字符类型)。
string类的接口与常规容器的接口基本相同
string类是basic_string类模板的一个char类型的实例,string是宏定义的类名:
typedef basic_string<char, char_traits, allocator> string
使用string类时,必须包含#include,string类定义在命名空间std中
二.string类的常用成员接口
1.string类对象的构造函数接口
string主要的构造函数有四个重载:

include

include

using std::cin;
using std::cout;
using std::endl;
using std::string;

int main()
{

string a;                        调用无参构造函数

string b("hello world");        调用形参为const char* 的构造函数

string c(b);                    调用string的拷贝构造函数,用b去拷贝构造c

return 0;

}

监视窗口中的size指的是string对象存储的字符串的有效字符个数(也是可以被访问到的元素个数)(存储的有效数据的个数)
监视窗口中的capacity指的是当前string对象的存储容量(大于或等于size)
string对象可以根据实际情况自动扩充存储容量,用户也可以自行调用相关接口来调整其容量
allocator是供string对象使用的空间配置器(内存池)

  1. string类对象的容量操作接口

size()和length()
std::string::size
size_t size() const;
std::string::length
size_t length() const;
这两个接口的功能是一样的,使用size会更好(因为其他容器也是用size来获取有效数据个数的) (const修饰的是this指针)

empty()和clear()
std::string::empty
bool empty() const;
std::string::clear
void clear();
empty()的功能是检测string中存储的是否为空字符串(无有效字符,size为0),empty不会改变string的字符串内容,也不会改变其存储空间大小(capacity)
clear()的功能是将string中有效字符个数置为0(size置为0),但是不改变其存储空间大小(capacity不变)

resize接口
string的resize接口有两个重载

std::string::resize
void resize (size_t n);
​​​​​​​void resize (size_t n, char c);
void resize (size_t n)的功能是将string的有效字符串长度(size)调整为n个(n若大于原来string的有效字符长度(size),则多出的有效字符用'\0'来填充)(注意n小于string原本的有效字符长度(size)时,不会改变string的容量capacity)。
​​​​​​​void resize (size_t n, char c)的功能是将string的有效字符串长度(size)调整为n个,如果n大于string原本的有效字符长度(size)则多出的有效字符用字符c来填补(注意n小于string原本的有效字符长度(size)时,不会改变string的容量capacity)
​​​​​​​ reserve接口
std::string::reserve
void reserve (size_t n = 0);
reserve的功能是将字符串的存储容量capacity预设为n(注意reserve只能扩容不能缩容,当n小于string原capacity大小时,该函数不会改变capacity)

如果预先知道字符串要存储的有效字符个数,最好先用reserve预设好string的容量以避免后续多次进行容量调整(频繁的容量调整会降低程序的运行效率)

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

operator[] : 运算符[]在string中有两个重载

std::string::operator[]
char& operator[] (size_t pos);

const char& operator[] (size_t pos) const;
[]运算符重载的功能是返回字符串中下标为pos位置的字符的引用(不带const的可读可写,带const的只可读不可写)

用迭代器去遍历容器的有效数据(迭代器遍历法通用于所有容器)
迭代器在使用层面上类似于指针:

begin()接口可以返回指向容器首个有效数据的迭代器

end()接口可以返回指向容器末尾有效数据下一个位置空间的迭代器

int main()
{

string b("hello world");        //调用形参为const char* 的构造函数

auto it = b.begin();            //auto自动识别的类型为 std::string::iterator 
while (it != b.end())
{
    cout << *it;                
    ++it;
}

return 0;

}

用指针来类比记忆:

  1. string类对象中字符串的修改操作接口

operator+= (+=的运算符重载)
std::string::operator+=
将一个string对象的字符串追加到string对象的字符串中。
string& operator+= (const string& str);
将一个常量字符串追加到string对象的字符串中
string& operator+= (const char* s);
将一个字符追加到string对象的字符串中
string& operator+= (char c)

相关文章
|
1月前
|
存储 算法 C++
C++ STL 初探:打开标准模板库的大门
C++ STL 初探:打开标准模板库的大门
95 10
|
1月前
|
存储 搜索推荐 C++
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
49 2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
|
1月前
|
存储 程序员 C++
C++常用基础知识—STL库(2)
C++常用基础知识—STL库(2)
69 5
|
1月前
|
存储 自然语言处理 程序员
C++常用基础知识—STL库(1)
C++常用基础知识—STL库(1)
52 1
|
1月前
|
算法 安全 Linux
【C++STL简介】——我与C++的不解之缘(八)
【C++STL简介】——我与C++的不解之缘(八)
|
1月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
54 2
|
1月前
|
算法 数据处理 C++
c++ STL划分算法;partition()、partition_copy()、stable_partition()、partition_point()详解
这些算法是C++ STL中处理和组织数据的强大工具,能够高效地实现复杂的数据处理逻辑。理解它们的差异和应用场景,将有助于编写更加高效和清晰的C++代码。
22 0
|
8天前
|
存储 编译器 C++
【c++】类和对象(中)(构造函数、析构函数、拷贝构造、赋值重载)
本文深入探讨了C++类的默认成员函数,包括构造函数、析构函数、拷贝构造函数和赋值重载。构造函数用于对象的初始化,析构函数用于对象销毁时的资源清理,拷贝构造函数用于对象的拷贝,赋值重载用于已存在对象的赋值。文章详细介绍了每个函数的特点、使用方法及注意事项,并提供了代码示例。这些默认成员函数确保了资源的正确管理和对象状态的维护。
35 4
|
9天前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
33 4
|
1月前
|
存储 编译器 对象存储
【C++打怪之路Lv5】-- 类和对象(下)
【C++打怪之路Lv5】-- 类和对象(下)
27 4