string是C++标准模板库中专门用于字符串处理的数据结构类型。它并不是 C++的基本数据类型,它是 C++标准模板库中的一个“类”。若要使用 string 对象,则必须包含头文件#include 。
1. 初始化
常用的初始化有以下几种,带等号的是拷贝初始化,
string str1("hello world"); // hello world
string str2 = "hello world"; // hello world
string str3(str2); // hello world
string str4 = str3; // hello world
string str5(5,'d'); // ddddd
string str6(str2, 6); // world,从str2的第6个字符开始到结束,拷贝到str6中
string str7(str2, 0, 5); // hello, 从str2的第0个字符开始拷贝5个字符到str7中
char buff[] = "hello sorld";
string str8(buff, 5); // hello, 拷贝buff的前5个字符到str8中
特殊数据结构成员
static const size_t npos = -1;
2. string 的基本操作
- 长度
size_t length() const noexcept; // 得到字符串的长度
size_t size() const noexcept; // 得到字符串的长度
size_t max_size() const noexcept; // 得到字符串可以达到的最大长度
- 插入
在指定的位置后面插入一个字符串
// 在pos后面插入字符串str
string& insert (size_t pos, const string& str);
// 在pos后面插入str的subpos处往后的sublen长度的字符串
string& insert (size_t pos, const string& str, size_t subpos, size_t sublen);
// 在pos后面插入字符数组s
string& insert (size_t pos, const char* s);
// 在pos后面插入字符数组s的前n个字符
string& insert (size_t pos, const char* s, size_t n);
// 在pos后面插入n个字符c
string& insert (size_t pos, size_t n, char c);
// 在p后面插入n个字符c
iterator insert (const_iterator p, size_t n, char c);
// 在p后面插入一个字符c
iterator insert (const_iterator p, char c);
// 在p后面插入迭代器first到last之间的字符串
template <class InputIterator>
iterator insert (iterator p, InputIterator first, InputIterator last);
// 在p后面插入il内的所有字符
string& insert (const_iterator p, initializer_list<char> il);
- 替换
把指定的位置后指定长度的字符串替换成另一个字符串
// 把pos后面len长度的字符串替换成str
string& replace (size_t pos, size_t len, const string& str);
// 把i1和i2之间的内容替换成str
string& replace (const_iterator i1, const_iterator i2, const string& str);
// 把pos后面len长度的字符串替换成字符串str的subpos后面的sublen个长度的字符串
string& replace (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen);
// 把pos后面len长度的字符串替换成字符数组s里的所有内容
string& replace (size_t pos, size_t len, const char* s);
// 把i1和i2之间的字符串替换成数组s里的所有内容
string& replace (const_iterator i1, const_iterator i2, const char* s);
// 把pos后面len长度的字符串替换成字符数组s里面前n个字符
string& replace (size_t pos, size_t len, const char* s, size_t n);
// 把i1和i2之间的字符串替换成字符数组s里面的前n个字符
string& replace (const_iterator i1, const_iterator i2, const char* s, size_t n);
// 把pos后面len长度的字符串替换成n个字符c
string& replace (size_t pos, size_t len, size_t n, char c);
// 把i1和i2之间的字符串替换成n个字符c
string& replace (const_iterator i1, const_iterator i2, size_t n, char c);
// 把i1和i2之间的字符串替换成迭代器f