【C++】标准库类型string

举报
修修修也 发表于 2024/04/22 20:39:29 2024/04/22
【摘要】  string类简介        在实际开发中会经常使用字符串,所谓的字符串就是指一连串的字符,它由许多单个字符连接而成。字符串中可以包含任意任意字符,这些字符必须包含在一对英文双引号( " " )之内,例如"abc"。C++中定义了String类来封装字符串,并提供了一系列操作字符串的方法,它们都位于<string>头文件中。        我们先来看一下https://legacy.c...

 string类简介

        在实际开发中会经常使用字符串,所谓的字符串就是指一连串的字符,它由许多单个字符连接而成。字符串中可以包含任意任意字符,这些字符必须包含在一对英文双引号( " " )之内,例如"abc"。C++中定义了String类来封装字符串,并提供了一系列操作字符串的方法,它们都位于<string>头文件中。

        我们先来看一下https://legacy.cplusplus.com/ 网站对string类的文档介绍:string类文档 编辑

总结如下:

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

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

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

typedef basic_string<char, char_traits, allocator>string;


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

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


string类常用接口(成员函数)

📌string类对象默认成员函数

🎏string类对象构造函数

        如下,C++98标准中对于string类实现了7个重载的构造函数:string类查询文档 编辑

        其参数解析如下:

编辑

         接下来我们演示使用如下四种常见的string类构造函数:

函数名称

功能说明

string()

构造空的string类对象,即空字符串

string(const char* s)

用C-string来构造string类对象

string(size_t n,char c)

string类对象中包含n个字符c

string(const string&s)

拷贝构造函数

        如下代码,分别按上述构造函数顺序调用了相应构造函数初始化了4个string类对象:

#include<iostream>

#include<string>

using namespace std;

int main()

{

    //构造空的string类对象,即空字符串

    string s1;

    //用C-string来构造string类对象

    string s2("hello world");

    //string类对象中包含n个字符c

    string s3(5, 'x');

    //拷贝构造函数

    string s4(s2);

    cout << s1 << endl;

    cout << s2 << endl;

    cout << s3 << endl;

    cout << s4 << endl;

    return 0;

}

        运行程序,构造类对象效果如下:编辑


🎏string类对象析构函数

        如下,C++中对于string类实现了1个析构函数:

编辑

        该函数没有参数,没有返回值,在类对象生命周期结束后自动调用销毁类对象.


🎏string类对象赋值运算符重载函数

    如下,C++98标准中对于string类实现了3个重载的赋值运算符重载函数:

编辑

          接下来我们演示使用这三种常见的string类赋值运算符重载函数: 

          如下代码,分别按上述赋值运算符重载函数顺序调用了相应赋值运算符重载函数赋值了3次string类对象s4:

int main()

{

    //构造空的string类对象,即空字符串

    string s1;

    //用C-string来构造string类对象

    string s2("hello world");

    //string类对象中包含n个字符c

    string s3(5, 'x');

    //拷贝构造函数

    string s4(s2);

    cout << s4 << endl;

    s4 = s3;

    cout << s4 << endl;

    s4 = "ABCDEF";

    cout << s4 << endl;

    s4 = 'Y';

    cout << s4 << endl;

    return 0;

}

          运行程序,赋值运算符重载效果如下:

​​​编辑​

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。