C++容器——string

目录

string容器

特点:

string的使用流程

需要添加头文件

string定义字符串

string还可以定义字符串数组

string类的初始化

string类的常用操作

连接

比较

访问字符

子字符串查找

修改字符串

大小

插入和删除

兼容C风格字符串

其他功能


string容器

string容器是C++风格的字符串 (使用string字符串更加便捷,安全)

string本质是一个类,它定义在 <string> 头文件中,用于表示和操作字符串

char本质是一个指针

std::vector<char>的功能增强版就是std::string

特点:

  1. 封装性:std::string它封装了底层的字符数组,提供了面向对象的接口来操作字符串,用户无需直接管理内存,降低了因手动处理指针而导致的错误,如内存泄漏或访问违例。
  2. 自动内存管理:std::string会自动调整其内存大小以适应字符串内容的变化,包括增长和缩小。这意味着在拼接、插入或删除字符时,不需要担心缓冲区溢出或浪费内存空间。当字符串对象被销毁时,其占用的内存也会被自动释放。
  3. 兼容C风格字符:通过构造函数、赋值运算符或特定成员函数如c_str()实现。

string的使用流程

  1. 需要添加头文件<string>
  2. 定义及初始化string容器
  3. 使用string容器

需要添加头文件

#include<string>

string定义字符串

格式:std::string 字符串名;

string还可以定义字符串数组

格式:std::string 字符串数组名(数组大小); 

string类的初始化

可以用=或者{}进行赋值,可以进行相同连续的赋值

#include <iostream>
#include <string>
int main()
{
    std::string str1;               // 创建一个空字符串  
    std::string str2 = "Hello";    // 使用字符串字面量初始化  
    std::string str3(str2);        // 使用另一个字符串对象初始化  
    std::string str4(5, 'c');      // 创建包含5个字符'c'的字符串
    return 0;
}

相对于C风格的字符串运算string的运算更加简便和安全

string类的常用操作

连接

使用 + 运算符或 append() 方法连接字符串。

std::string str1 = "Hello";
std::string str2 = "C++";
std::string str3 = str1 + " " + str2; // "Hello C++"
str1.append(" C++"); // str1 现在也是 "Hello C++"

比较

直接使用比较运算符比较字符串。

if (str1 == str2)
{
// 字符串相等
} else if (str1 < str2) 
{
// str1 小于 str2
}

访问字符

使用下标运算符或 at() 方法访问特定位置的字符。

char ch = str1[0]; // 获取第一个字符
char ch2 = str1.at(0); 
// 同样获取第一个字符,但会进行范围检查

//at不会使用溢出

子字符串查找

使用 find() 方法查找子字符串的位置。

size_t pos = str1.find("World"); 
// 返回子字符串在 str1 中的位置,如果没找到则返回 std::string::npos

修改字符串

使用 replace() 方法替换子字符串,或使用赋值运算符修改特定位置的字符。

str1.replace(pos, 5, "C++"); // 从 pos 开始,替换 5 个字符为 "C++"
str1[0] = 'h'; // 修改第一个字符为 'h'

大小

使用 size() 或 length() 方法获取字符串的长度。

size_t len = str1.size(); // 获取字符串长度
size_t len = str.length(); // 获取字符串的长度

插入和删除

使用 insert() 方法在字符串中插入字符或子字符串,使用 erase() 方法删除字符或子字符串。

str1.insert(0, "Hi "); // 在字符串开头插入 "Hi "
str1.erase(0, 2); // 删除前两个字符

兼容C风格字符串

使用c_str或者赋值的操作

#include<iostream>
#include<string>
int main()
{
	std::string a{ "abssdf" };
	const char* c = a.c_str();
	std::cout << c;
	return 0;
}

//输出结果是
//abssdf

其他功能

std::string 还提供了其他方法,如 substr()(获取子字符串)、swap()(交换两个字符串的内容)等。

  • 14
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值