【C++】string

小明 2025-05-08 18:47:46 8

文章目录

  • 1. 标准库中的string类
    • 1.1 string类
    • 2 string类的常用接口说明
      • 2.1 string类对象的常见构造
      • 2.2 string类对象的容量操作
      • 2.3. string类对象的访问及遍历操作
      • 2.4 string类对象的修改操作
      • 2.5 string类非成员函数
      • 2.6 vs和g++下string���构的说明

        1. 标准库中的string类

        1.1 string类

        string类的文档介绍

        1. 字符串是表示字符序列的类。
        2. 标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。
        3. string类是使用char(即作为它的字符类型,使用它的默认char_traits和分配器类型)。
        4. string类是basic_string模板类的一个实例,它使用char来实例化basic_string模板类,并用char_traits和allocator作为basic_string的默认参数。
        5. 注意,这个类独立于所使用的编码来处理字节:如果用来处理多字节或边长字符(如UTF-8)的序列,这个类的所有成员(如长度或大小)以及它的迭代器,将仍然按照字节(而不是实际编码的字符)来操作。

        总结

        1. string是表示字符串的字符串类。
        2. 该类的接口与常规容器的接口基本相同,再添加了一些专门用来操作string的常规操作。
        3. string在底层实际是:basic_string模板类的别名,typedef basic_stringstring;
        4. 不能操作多字节或者变长字符的序列。
        5. 在使用string类时,必须包含#include头文件以及using namespace std;

        2 string类的常用接口说明

        2.1 string类对象的常见构造

        (constructor)函数名称功能说明
        string()(重点)构造空的string类对象,即空字符串
        string(const char* s)(重点)用C-string来构造string类对象
        string(size_t n, char c)string类对象中包含n个字符c
        string(const string& s)(重点)拷贝构造函数
        void Teststring()
        {
        	string s1;					// 构造空的string类对象s1
        	string s2("hello bit");		// 用C格式字符串构造string类对象s2
        	string s3(s2);				// 拷贝构造s3
        }
        

        2.2 string类对象的容量操作

        函数名称功能说明
        size(重点)返回字符串有效字符长度
        length返回字符串有效字符长度
        capacity返回空间总大小
        empty(重点)检测字符串是否为空串,是返回true,否则返回false
        clear(重点)清空有效字符
        reserve(重点)为字符串预留空间
        resize(重点)将有效字符的个数改成n个,多出的空间用字符c填充

        代码演示

        // 测试string容量相关的接口
        // size/clear/resize
        void Teststring1()
        {
        	// 注意:string类对象支持直接用cin和cout进行输入和输出
        	string s("hello, string!");
        	cout 
        	string s;
        	// 测试reserve是否会改变string中有效元素个数(不会改变)
        	s.reserve(100);
        	cout 
        	string s1("hello string");
        	const string s2("Hello string");
        	cout 
        	string s("hello string");
        	// 3种遍历方式:
        	// 需要注意的以下三种方式除了遍历string对象,还可以遍历时修改string中的字符,
        	// 另外以下三种方式对于string而言,第一种使用最多
        	// 1. for+operator[]
        	for (size_t i = 0; i 
The End
微信