C++ string类详解
从易于编程的角度来看,标准库 string 类和 C 字符串相比多了几个优点。
正如本章前面所述,string 类有若干个成员函数和重载运算符。这些都可以简化任务,例如在一个字符串中查找一个字符或字符串,用 C 字符串执行起来就既困难又繁琐。
本节将回顾一些使用 string 的基本操作,然后讨论更多的 string 类的成员函数。
任何使用 string 类的程序都必须使用 #include 包含 string 头文件。然后可以使用如表 1 所示的构造函数中的任何一个创建 string 对象。
string 类重载的运算符如表 2 所示。
string 类还有若干个成员函数。例如,size 函数将返回字符串的长度。表 3 列出了许多 string 类成员函数及其重载的变体。在某些情况下,传递给成员函数的实参可能会使请求的操作不可能。在这些情况下,成员函数将通过拋出异常来指示错误的发生。
正如本章前面所述,string 类有若干个成员函数和重载运算符。这些都可以简化任务,例如在一个字符串中查找一个字符或字符串,用 C 字符串执行起来就既困难又繁琐。
本节将回顾一些使用 string 的基本操作,然后讨论更多的 string 类的成员函数。
任何使用 string 类的程序都必须使用 #include 包含 string 头文件。然后可以使用如表 1 所示的构造函数中的任何一个创建 string 对象。
定 义 | 描 述 |
---|---|
string() | 默认构造函数:创建空字符串。示例:string str (); |
string(const char *s) | 转换构造函数:使用 C 字符串创建一个 string 对象。示例:string name("William Smith"); |
string(const string &s) | 复制构造函数:从现有字符串创建一个新的字符串。示例: string name1(s); |
string 类重载的运算符如表 2 所示。
重载运算符 | 描 述 |
---|---|
>> | 从流中提取字符并将其插入到字符串中。复制字符直至遇到空格或输入的结尾 |
<< | 将字符串插入流中 |
= | 将右侧的字符串赋值给左侧的 string 对象 |
+= | 将右侧字符串的副本附加到左侧的 string 对象 |
+ | 返回将两个字符串连接在一起所形成的字符串 |
[] | 使用数组下标表示法,如 name[x]。返回 x 位置的字符的引用 |
关系运算符 | 以下每个关系运算符都将被执行:< > <= >= = != |
string 类还有若干个成员函数。例如,size 函数将返回字符串的长度。表 3 列出了许多 string 类成员函数及其重载的变体。在某些情况下,传递给成员函数的实参可能会使请求的操作不可能。在这些情况下,成员函数将通过拋出异常来指示错误的发生。
成员函数示例 | 描 述 |
---|---|
theString.append(str); | 将 str 追加到 theString。实参 six 可以是一个 string 对象或 C 字符串 |
theString.append(str, p, n); | 从位置 p 开始,str 中的 n 个字符被附加到 theString 中。如果从 p 开始的 str 的子串少于 n 个字符,则会引发异常 |
theString.append(str, n); | C 字符串 str 的前 n 个字符被附加到 theString 中 |
theString.append(n, ch); | 将字符 ch 的 n 个副本附加到 theString 中 |
theString.assign(str); | 将 str 赋值给 theString。形参 str 可以是 string 对象或 C 字符串 |
theString.assign(str, p, n); | 从位置 p 开始,str 中的 n 个字符被赋值给 theString。如果从 p 开始的 str 的子串少于 n 个字符,则会引发异常 |
theString.at(p); | 返回字符串中 p 位置的字符。它与 theString[p] 返回的值是一样的 |
theString.begin(); | 返回指向 theString 中第一个字符的迭代器。 |
theString.capacity(); | 返回 theString 被分配的存储的大小 |
theString.clear(); | 通过删除 theString 中存储的所有字符来清除字符串 |
theString.compare(str); | 以 strcmp 的方式比较 theString 和 str。str 实参可能是一个 string 对象,也可能是一个 C 字符串 |
theString.copy(str, p, n); | 将从 theString 的位置 p 开始的长度为 n 的子串复制到字符数组 str 中。如果 theString 在给定位置 p 之后少于 n 个字符,则会引发异常 |
theString.c_str(): | 返回 theString 对象的 C 字符串值 |
theString.data(); | 返回一个包含 null 终止字符串的字符数组,就像存储在 theString 中的一样 |
theString.empty(); | 如果 theString 为空则返回 true,否则返回 false |
theString.end(); | 返回指向 theString 中最后一个字符的迭代器。 |
theString.erase(p, n); | 从 theString 的位置 p 开始,删除 n 个字符 |
theString.find(str, p); | 返回在 theString 中找到的 str 字符串的第一个位置。形参 str 可以是 string 对象或 C 字符串。如果没有找到 str,则返回 theString 类的静态成员 string::npos |
theString.find(ch, p); | 返回在 theString 中找到的 ch 字符的第一个位置。如果没有找到 ch,则返回 string::npos |
theString.insert(p, str); | 将 str 的副本插入到 theString 中,从位置 p 开始。str 实参可以是 string 对象, 也可以是 C 字符串 |
theString.length(); | 返回 theString 中字符串的长度 |
theString.replace(p, n, str); | 使用 string 对象 str 中的字符替换 theString 中的 n 个字符,从位置 p 开始 |
theString. size(); | 返回 theString 中字符串的长度 |
theString.substr(p, n); | 返回一个子串的副本。子串长度为 n 个字符,从 theString 的 p 位置开始 |
theString. swap(str); | 交换 theString 和 str 的内容 |
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算