头文件<string>
…
操作
…
string操作的实参
…
构造函数和析构函数
注意
:
你不能以一个单字符初始化某字符串,但是可以这样做:
string a('a');//错误
string b(1, 'a');//正确
string c({ 'a' });//正确
表示存在一个从const char* 到string的自动类型转换,但不存在一个从char到string的自动类型转换.
…
…
string和C-String
C++ STL将字符串字母常量的类型由char*
改变为const char*
.为了提供兼容性,还规定了可从const char*
隐式转换为char*
.
返回指向以’\0’结尾的不可变数组的指针
注意:
'\0'在string中并不具有特殊意义
有三个函数可以将string内容转换为字符数组或C-string:
1. c_str()
和data()
可以得到string对应的C-string,所得到的结果和以’\0’结尾的字符数组一样
2.copy()
将string内容复制到调用者提供的字符数组中,其末尾不添加'\0'字符
.
复制[_Off, _Off + _Count) 到 [_Ptr, _Ptr + _Count)
使用例子:
int main()
{
string b("123456");
cout << atoi(b.data()) << endl;
cout << atoi(b.c_str()) << endl;
char buffer[10];
b.copy(buffer, 10);
}
…
…
大小和容量
一个string存在三种"大小" :
1.size()
和length()
:返回string的现有字符数,两个函数等效
2.max_size()
:返回string最多能够包含的字符数。与PC本身的限制有关系,返回值一般而言是索引类型之最大值减一。
之所以减一有两个原因:1.最大值本身是npos.2.具体实现过程中有可能在内部缓冲区末尾添加一个’\0’,以便将这个string当作C-string使用。
3.capacity()
:重新分配内存之前,string所能包含的最大字符数.
注意
:
…
…
元素访问
有两种方法可以访问单一字符:下标操作符[]和成员函数at()
,C++11还提供了front()
和back()
用来访问第一字符和最末字符.
注意:
…
…
比较
…
…
更改内容
赋值
交换
清空
插入和移除字符
…
…
子字符串及字符串接合
i/o操作
getline()
搜索和查找
npos的意义
数值转换