表达式 |
效果 |
string s |
生成一个空的 string s |
string s(str) |
Copy 构造函数,创建一个 string str 的拷贝 |
string s(rvStr) |
Move 构造函数,创建一个 string 并将 rvStr 的内容搬移给 s |
string s(str,stridx) |
将 string str 内“始于位置 stridx”的部分当作字符串 s 的初值 |
string s(str,stridx,strlen) |
将 string str 内“始于位置 stridx 且长度最多 strlen”的部分当作字符串 s 的初值 |
string s(cstr) |
以 C-string cstr 作为字符串 s 的初值 |
string s(chars,charslen) |
以字符数组 chars 的前 charslen 个字符作为字符串 s 的初值 |
string s(num,c) |
生成一个字符串,包含 num 个 c 字符 |
string s(beg,end) |
以 [beg,end) 区间内的字符作为字符串 s 的初值 |
string s(initlist) |
以 initlist 内的字符作为字符串 s 的初值 |
表达式 |
效果 |
s.~string() |
销毁所有字符,释放内存 |
'\0'
在 string 之中不具有特殊意义,与其它字符的地位完全相同,但在 C-string 中标识结束
null pointer (NULL) 不可取代 nullptr 或 char * 参数,因为 NULL 具有整数类型
以字符数组的形式返回 string 内容,其结果是一个包含 '\0' 字符的有效 C-string
返回的字符数组由该 string 拥有,即调用者不可以改动它或释放其内存
返回值的有效期限在下次调用 non-const 成员函数时即告终止
将 string 内容复制到“调用者提供的字符数组”中,其末尾不添加 '\0' 字符
作用:返回 string 的现有字符数
PS:size() 和 length() 两个函数等效
empty() 检验字符数是否为 0,即字符串是否为空,比 size() 和 length() 更快,优先使用
作用:返回 string 可存放的最大字符串的长度
作用:返回 string 分配的存储容量
访问方法:
注意:
操作数:string、C-string
比较依据:字典序
返回值:整数值,0 表示相等,小于 0 表示小于,大于 0 表示大于
作用:对 string 赋予新值
新值:string、C-string、单一字符
string a;
string b;
1.字符串直接赋值
a.assign(b);
a.assign("hyy");
2.一个字符串的子串赋值给另一个字符串
a.assign(b,begin,len);
从字符串 b 的第 begin 个字符开始向后 len 个字符(包括 begin)的字符串赋值给字符串 a
3.从字符串的某一个字符串开始到结束赋值给另一个字符串
a.assign(b,begin);
4.从字符串开始到字符串的某一个字符赋值给另一个字符串
a.assign("hyy",len);
5.用相同的 n 个字符给字符串赋值
a.assign(n,'c');
6.使用迭代器赋值
a.sssign(b.begin(),b.end());
作用:交换两个 string 内容
s = "" ;
s.clear();
s.erase();
operator +=:将单一实参附加于 string 末尾
append():接受多个实参指明附加值
insert():需知道安插位置的索引,新字符将被安插于此位置之后;不接受“索引+单字符”的实参,必须传入一个 string 或加上一个额外数字
s.insert ( 0 , ' ' ) ; //ERROR
s.insert ( 0 , " " ) ; //OK
push_back():向 string 末尾添加字符
erase()
pop_back():删除 string 最后一个字符
replace()
resize():若实参指出的大小比现有字符数少,末尾字符被移除;如实参指出的大小比现有字符数多,则以某个字符填充尾部,可以传入一个字符参数作为填充字符,否则以字符类型 default 构造函数建立填充字符
substr():提取子串
operator +
operator >>:从 input stream 读取一个 string
operator >> 的执行方式:
1.若设立了 skipws flag,则跳过开头空格
2.持续读取所有字符,直到发生以下情形之一:
a.下个字符为空白字符
b.Stream 不再处于 good 状态
c.Stream 的 width() 结果大于 0,且目前已读出 width() 个字符
d.已读取 max_size() 个字符
3.Stream width() 被设为0
operator <<:把一个 string 写到 output stream
getline():读取所有字符,包括开头的空白字符,直到遭遇分行符或 end-of-file。分行符会被读取出来但不会不会被附加到结果上
返回值:返回字符序列中“符合查找条件”的第一个字符的索引
参数:
std::invalid_argument
;若被转换值超出返回类型可表达范围,抛出 std::out_of_range
包含 beg 但不包含 end,是半开区间,[beg,end)