STL string类详解:构造、字符操作与输入输出

需积分: 38 2 下载量 151 浏览量 更新于2024-09-13 收藏 20KB DOCX 举报
本文档详细介绍了C++标准模板库(STL)中的`std::string`类,这是C++中最常用的字符串类型之一。它提供了丰富的功能,包括各种构造函数、字符操作、特性获取、输入输出以及赋值操作。 **1. 构造函数** - `string(const char* s);`:此构造函数接受一个C风格字符串`s`作为参数,将它转换为`std::string`对象。 - `string(int n, char c);`:通过指定的整数`n`和字符`c`创建一个包含`n`个重复字符`c`的字符串。 - 除了上述显式构造函数,`std::string`还具备默认构造函数和复制构造函数,例如`string s1;`(默认构造)和`string s2 = "hello";`(复制构造),允许用户方便地初始化字符串。 **2. 字符操作** - `const char& operator[](int n) const;` 和 `char& operator[](int n);`:这两个成员函数返回指定索引位置的字符。`const`版本是常量引用,用于只读访问,`&`版本是可修改引用,允许直接修改字符。`at(int n)` 是一个安全版本,提供了范围检查,当索引越界时会抛出`std::out_of_range`异常。 - `const char* data() const;`:返回一个指向字符串内部存储的非NULL终止的字符数组。 - `const char* c_str() const;`:返回一个以NULL终止的C风格字符串,便于与C API交互。 **3. 特性描述** - `int capacity() const;`:返回当前字符串的容量,即可以容纳的元素数量,而不必增加内存。 - `int max_size() const;`:表示`std::string`对象能够容纳的最大字符串长度,受系统内存限制。 - `int size() const;`:返回字符串的实际长度,不包括结束符。 - `int length() const;`:同`size()`,用于兼容性。 - `bool empty() const;`:判断字符串是否为空。 **4. 输入输出操作** - `std::string operator>>(istream& in, string& s);` 和 `std::string operator<<(ostream& out, const string& s);`:这两个重载运算符分别用于从输入流中读取字符串和向输出流写入字符串。 **5. 赋值操作** - `string& operator=(const string& s);`:将一个字符串`s`的内容复制到当前字符串。 - `string& assign(const char* s);`:将C风格字符串`s`的内容插入到当前字符串中。 总结来说,`std::string`类提供了强大的字符串处理能力,使得在C++编程中操作字符串变得简单且高效。理解这些函数和操作有助于程序员编写出健壮和高效的代码。