STL之容器:string

        string 类是 C++ 中常用的处理字符串的类,它提供了很多有用的函数和方法。下面是一些常用的 string 类函数和方法:

一.使用前的准备工作:

#include <string>  // 引入 <string> 头文件
using namespace std;  // 使用命名空间 std

string str;  // 定义一个空字符串变量
str = "hello world";  // 给字符串变量赋值

二.常用string 类的成员函数:

1

str.length() 或str.size()返回字符串的长度
2str.empty()判断字符串str是否为空,字符串为空返回(true)1,不为空返回0(false)
3str.clear()清空字符串str内容。
4str.c_str()返回一个以 null 结尾的字符数组,用于与 C 风格的字符串交互。
5str.at(index)返回字符串str中指定位置的字符
6str[index]通过索引访问字符串str中的字符
7str.substr(index,length)返回一个子字符串,包含指定位置和长度的部分。
8str.find(指定字符串)返回字符串str中第一次出现指定子字符串的位置index。
9str.rfind(指定字符串)返回字符串str中最后一次出现指定子字符串的位置index。
10str.append(指定字符串)在字符串str末尾追加另一个字符串。
11str.insert(index,指定字符串) 在指定位置插入一个字符串
12str.erase(index,length) 删除指定位置或指定范围内的字符。
13str.replace(index,length,指定字符串)替换指定位置或指定范围内的字符为另一个字符串。
14str.compare(str,被比较字符串)

compare(): 比较两个字符串的大小关系。如果str > 被比较字符串,返回1 ;str < 被比较字符串,返回-1;str == 被比较字符串,返回0。

三.代码示例:

1.length() 或 size():

string str = "Hello, World!";
int len = str.length(); // 或者 int len = str.size();
printf("%d\n",len);// 输出:字符串的长度为:13

2.empty():

string str = "Hello";
int result = str.empty();

if(reslult)
{
    printf("字符串是否为空:是\n");
}
else
{
    printf("字符串是否为空:否\n");
}

// 输出:字符串是否为空:否

3.clear():

string str = "Hello";
str.clear();
printf("清空后的字符串:%s\n",str.c_str()); // 输出:清空后的字符串:

4.c_str():

string str = "Hello";
const char* cstr = str.c_str();
printf("C 风格字符串:%s\n", cstr); // 输出:C 风格字符串:Hello

注意:

        在这段代码中,将`str`转换为C风格字符串并赋值给`const char* cstr`时,使用了`const`关键字来修饰指针变量的类型,即`const char*`。

        `const`关键字用于声明一个变量为常量,即该变量的值在声明之后不能被修改。在这里,将`cstr`声明为`const char*`类型的常量指针,是为了表明该指针指向的内容不可更改。

        在C++中,`c_str()`函数返回的指针类型通常是`const char*`,这是因为C++字符串常常是以常量形式存在的,而且在C++标准库中规定了这样的行为。因此,为了遵循这个规定并确保字符串的不可变性,通常会将`cstr`声明为指向常量的指针,即`const char*`类型。

        总结起来,将`cstr`声明为`const char*`类型是为了强调字符串的不可变性,并防止对字符串内容的修改。

5.at(index):

string str = "Hello";
char ch = str.at(1);
printf("索引1位置的字符:%c\n",ch);  // 输出:索引1位置的字符:e

6.operator[]:

string str = "Hello";
char ch = str[1];
printf("索引1位置的字符:%c\n",ch);  // 输出:索引1位置的字符:e

7.substr():

string str = "Hello, World!";
string substr = str.substr(7, 5);
printf("子字符串:%s\n",substr);  // 输出:子字符串:World

8.find():

string str = "Hello, World!";
size_t pos = str.find("World");

if (pos != string::npos) 
{
    printf("子字符串的位置:%d\n",pos);  // 输出:子字符串的位置:7
} 
else
{
    printf("未找到子字符串\n"); 
}

9.append():

string str = "Hello";
str.append(", World!");
printf("追加后的字符串:%s\n",str.c_str()); // 输出:追加后的字符串:Hello, World!

10.insert();

string str = "Hello";
str.insert(5, ", World!");
printf("插入后的字符串:%s\n",str.c_str()); // 输出:插入后的字符串:Hello, World!

11.erase():

string str = "Hello, World!";
str.erase(5, 7);
printf("删除后的字符串:%s\n" ,str.c_str()); // 输出:删除后的字符串:Hello!

12.replace():

string str = "Hello, World!";
str.replace(7, 5, "Universe");
printf("替换后的字符串:%s",str.c_str());  // 输出:替换后的字符串:Hello, Universe!

13.compare():

string str1 = "Hello";
string str2 = "World";
int result = str1.compare(str2);
if (result == 0) 
{
    printf("两个字符串相等\n");
} 
else if (result < 0) 
{
    printf("str1 小于 str2\n");
} 
else 
{
    printf("str1 大于 str2\n");
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yuga...

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值