1.string类:
一直都在用string类,但是却没系统的了解,下面就系统介绍一下。
string的构造函数,目前存在7中,其中后两种是C++11新增的。如下图:
下面用代码分别举例:
#include <iostream>
#include <string>
using namespace std;
int main()
{
string One("Littery Winner!"); // 将One赋值为Littery Winner!
string Two(20, 'S'); // 将Two赋值为20个S
string Three(One); // 复制构造函数,复制One
string Four; // 定义一个空字符串
char alls[] = "All's well that ends well";
string Five(alls, 20); // 取alls的前20个字节
string Six(alls + 6, alls + 10); // 取[6,10)的字符,不包括10
string Six2(&alls[6], &alls[10]); // 取[6,10)的字符,不包括10
string Seven(Four, 7, 16); // 取Four的第7个字符开始,复制16个字符到Seven
//C++11
string (string&& str); // 叫做移动构造函数,将string赋值为str的副本
string Nine = { 'A', 'B', 'C', 'D', 'E' }; // 类似于数组赋值方式
}
2. string 的最大允许长度为 string::npos。通常是最大的unsigned int值。
3. 使用字符串的其他方式:可以比较两个字符串<,==,>,可以获取字符串的长度,size()和length()。两者功能相同,length是较早版本的,size是STL兼容添加的。
4.string的find方法相关
a.size_type find(const string& str,size_type pos=0) const :用于从位置pos开始查找str,如果找到返回出现str第一个字符的索引位置,否则返回string::npos。
b.size_type find(const char* s,size_type pos=0) const:也是查找s,只不过是char*数组
c.size_type find(const char* s,size_type_pos=0,size_type n):查找s的前n个字符组成的子字符串,找到返回第一个字符的索引,否则返回string::npos;
d.size_type find(const ch,size_type pos =0) const:在pos位置查找字符ch,返回值与上边相同
还有rfind:用于超找字符串或者字符最后一次出现的位置,
find_first_of:用于查找参数中任何一个字符首次出现的位置,如原字符串为“cobra”,int where = str.find_first_of("hark");返回3,hark是大集合,cobra是子集合,用cobra去hark中挨个比对,位置为3
5除此之外,还有替换assign,删除erase,复制copy,交换swap,比较compare,等等