目录
函数名称
|
功能说明
|
string()
(重点)
|
构造空的
string
类对象,即空字符串
|
string(const char* s)
(重点)
|
用
C-string
来构造
string
类对象
|
string(size_t n, char c)
|
string
类对象中包含
n
个字符
c
|
string(const string&s)
(重点)
|
拷贝构造函数
|
void Teststring()
{
string s1; // 构造空的string类对象s1
string s2("hello world"); // 用C格式字符串构造string类对象s2
string s3(s2); // 拷贝构造s3
}
函数名称
| 功能说明 |
size
(重点)
|
返回字符串有效字符长度
|
length
|
返回字符串有效字符长度
|
empty
(重点)
| 检测字符串释放为空串,是返回true,否则返回false |
clear
(重点)
| 清空有效字符 |
reserve
(重点)
|
为字符串预留空间
|
resize
(重点)
|
将有效字符的个数该成
n
个,多出的空间用字符
c
填充
|
capacity
|
返回空间总大小
|
// 测试string容量相关的接口
// size/clear/resize
void Teststring1()
{
// string类对象支持直接用cin和cout进行输入和输出
string s("hello, world");
cout << s.size() << endl;
cout << s.length() << endl;
cout << s.capacity() << endl;
cout << s << endl;
// 将s中的字符串清空,注意清空时只是将size清0,不改变底层空间的大小
s.clear();
cout << s.size() << endl;
cout << s.capacity() << endl;
// 将s中有效字符个数增加到10个,多出位置用'a'进行填充
// “aaaaaaaaaa”
s.resize(10, 'a');
cout << s.size() << endl;
cout << s.capacity() << endl;
// 将s中有效字符个数增加到15个,多出位置用缺省值'\0'进行填充
// "aaaaaaaaaa\0\0\0\0\0"
// 注意此时s中有效字符个数已经增加到15个
s.resize(15);
cout << s.size() << endl;
cout << s.capacity() << endl;
cout << s << endl;
// 将s中有效字符个数缩小到5个
s.resize(5);
cout << s.size() << endl;
cout << s.capacity() << endl;
cout << s << endl;
}
函数名称
|
功能说明
|
operator[ ]
(重点)
|
返回
pos
位置的字符,
const string
类对象调用
|
begin
+
end
|
begin
获取一个字符的迭代器
+
end
获取最后一个字符下一个位置的迭
代器
|
rbegin
+
rend
|
begin
获取一个字符的迭代器
+
end
获取最后一个字符下一个位置的迭
代器
|
范围
for
|
C++11
支持更简洁的范围
for
的新遍历方式
|
// string的遍历
// begin()+end() for+[] 范围for
// 注意:string遍历时使用最多的还是for+下标 或者 范围for(C++11后才支持)
// begin()+end()大多数使用在需要使用STL提供的算法操作string时,比如:采用reverse逆置string
void Teststring()
{
string s("hello string");
// 3种遍历方式:
// 需要注意的以下三种方式除了遍历string对象,还可以遍历是修改string中的字符,
// 另外以下三种方式对于string而言,第一种使用最多
// 1. for+operator[]
for (size_t i = 0; i < s.size(); ++i)
cout << s[i] << endl;
// 2.迭代器
string::iterator it = s.begin();
while (it != s.end())
{
cout << *it << endl;
++it;
}
// string::reverse_iterator rit = s.rbegin();
// C++11之后,直接使用auto定义迭代器,让编译器推到迭代器的类型
auto rit = s.rbegin();
while (rit != s.rend())
cout << *rit << endl;
// 3.范围for
for (auto ch : s)
cout << ch << endl;
}
函数名称
|
功能说明
|
push_back
|
在字符串后尾插字符
c
|
append
|
在字符串后追加一个字符串
|
operator+=
(
重点
)
|
在字符串后追加字符串
str
|
c_str
(
重点
)
|
返回
C
格式字符串
|
find
+
npos
(
重点
)
|
从字符串
pos
位置开始往后找字符
c
,返回该字符在字符串中的位置
|
rfind
|
从字符串
pos
位置开始往前找字符
c
,返回该字符在字符串中的位置
|
substr
|
在
str
中从
pos
位置开始,截取
n
个字符,然后将其返回
|
void Teststring5()
{
string str;
str.push_back(' '); // 在str后插入空格
str.append("hello"); // 在str后追加一个字符"hello"
str += 'wo'; // 在str后追加一个字符'wo'
str += "rld"; // 在str后追加一个字符串"rld"
cout << str << endl;
cout << str.c_str() << endl; // 以C语言的方式打印字符串
}