当前位置: 首页 > news >正文

【C++】string 的特性和使用

Ciallo~ (∠・ω< )⌒★

string(1)

  • 1. 构造函数
    • 1.1 string();
    • 1.2 string(const char* s);
    • 1.3 string(const string& str);
    • 1.4 string(size_t n, char c);
    • 1.5 string(const string& str, size_t pos, size_t len = npos);
    • 1.6 string(const char* s, size_t n);
  • 2. 析构函数
  • 3. 赋值运算符重载
  • 4. 字符串的遍历
    • 4.1 下标+[]
    • 4.2 迭代器
    • 4.3 范围for
  • 5. string类对象的容量操作
  • 6. string类对象的修改操作
  • 7. string类非成员函数

1. 构造函数

string类有如下图的构造函数:
在这里插入图片描述
其中比较重要的是1,2,4,6。

1.1 string();

无参的构造函数,定义了一个空字符串

string str1;

1.2 string(const char* s);

用常量串初始化

string str1("hello world!");
string str2 = "hello world!";

这两种初始化方式的意义是不一样的,str1是直接构造,str2是隐式类型转换

1.3 string(const string& str);

这是string类的拷贝构造函数

string str1("hello world!");
string str2(str1);

1.4 string(size_t n, char c);

用n个字符c初始化

string str(10, '*'); //用10个*初始化str

1.5 string(const string& str, size_t pos, size_t len = npos);

字符串的截取,其中str是源字符串,pos是开始截取的位置,len是截取的长度

string str1 = "hello world";
string str2(str1, 2, 6);

输出结果是:llo wo

1.6 string(const char* s, size_t n);

拷贝一个字符数组s的前n个元素

2. 析构函数

~string(),是string类已经写好的,而且在程序结束时会自动调用,没啥好说的。

3. 赋值运算符重载

在这里插入图片描述

str1 = "Test string: ";   // c-string
str2 = 'x';               // single character
str3 = str1 + str2;       // string

4. 字符串的遍历

4.1 下标+[]

string str("hello world");
for (int i = 0; i < str.size(); i++)
{cout << str[i] << " ";
}

4.2 迭代器

string str("hello world");
string::iterator it = str.begin();
while (it != str.end())
{cout << *it << " ";++it;
}
cout << endl;

迭代器是通用的遍历容器的方法,用原生指针或用封装原生指针的自定义类实现。

4.3 范围for

auto是C++11引入的关键字,用于自动推导变量类型。编译器根据初始化表达式的类型推断变量的实际类型,简化代码编写并提升可读性。

string str("hello world");
for (auto e : str)
{cout << e << " ";
}

5. string类对象的容量操作

函数名功能
size返回字符串的有效字符长度
length返回字符串的有效字符长度
capacity返回字符串总空间大小
empty判断字符串是否为空,是则返回true,否则返回false
clear清空有效字符
reserve为字符串预留空间
resize将有效字符个数设为n个,多出的空间用指定字符填充

注意当 reserve 的参数大于字符串底层总空间大小时,扩容,小于字符串底层总空间大小时不缩容。
当 resize 的参数大于字符串底层总空间大小时,调用reserve扩容。

6. string类对象的修改操作

函数名功能
push_back在字符串后尾插字符c
append在字符串后追加一个字符串
operator+=在字符串后追加一个字符串
c_str将字符串以字符数组形式返回
find查找一个字符或字符串第一次出现的下标
substr从pos位置开始,向后截取n个字符,然后将其返回

7. string类非成员函数

函数功能
operator+追加字符串
operator<<输出运算符重载
operator>>输入运算符重载
getline获取一行字符串
rational operators字符串的大小比较
http://www.dtcms.com/a/323594.html

相关文章:

  • 欢迎走进《励曼旋耕》
  • LintCode第547题-两数组的交集
  • leetcode 49. 字母异位词分组 - java
  • [激光原理与应用-202]:光学器件 - 增益晶体 - Nd:YVO₄增益晶体的制造过程与使用过程
  • vite面试题及详细答案120题(61-90)
  • 简单聊聊PowerShell
  • Effective C++ 条款32:确定你的public继承塑模出 is-a 关系
  • 【读代码】深度解析 SmolAgents Open Deep Research
  • 杰理-AW-断言-log
  • 计算机网络基础(三)
  • [Shell编程] Shell 函数
  • PyQt5技术栈简述
  • .htaccess 文件上传漏洞绕过总结
  • Linux文件操作详解:一切皆文件
  • 编辑距离-二维动态规划
  • SkyWalking-3--Java Agent开发和集成示例
  • AI智能编程工具汇总
  • ComfyUI版本更新---解决ComfyUI的节点不兼容问题
  • MySQL 主备(Master-Slave)复制 的搭建
  • SOLIDWORKS 2025对工具栏等进行了重新布局和优化
  • GoEnhance AI-AI视频风格转换工具
  • gRPC 全面解析与实战 —— 从原理到同步/异步开发全攻略
  • Linux系统编程——进程地址空间
  • GM3568JHF:FPGA+ARM异构开发板环境搭建教程
  • 嵌入式学习day23-shell命令
  • Qdrant Filtering:must / should / must_not 全解析(含 Python 实操)
  • 【Python 高频 API 速学 ②】
  • 【线程池】压测确定线程池合适的参数
  • 【js】判断异步函数的返回值要加await
  • 使用LangGraph从零构建多智能体AI系统:实现智能协作的完整指南