头文件:string(无.h!)
string类的构造函数与析构函数:
1、string s;
2、string s(str);// copy str to s;
3.string s(str, strhead);//copy str to s from the strhead position
4.string s(str,strhead,strtail);//copy str to s from strhead to strtail
5.string s(cstr);//copy a c string to s;
6.string s(char*, char*len);//copy a c string from 0 to char*len to s;
7.string s(int n, char c); // s包含n个c字符
8s.~string();//销毁所有字符,释放内存。
字符串操作函数:
1.= or assign(),赋值函数
2.swap() // 交换两个字符串。
3.+= or append or push_back()//在尾部加字符
4.insert()//插入字符
5.erase()//删除字符
6.clear()//删除全部字符
7.replace()//替换字符
8.+//串联字符串
9.== != < <= > >= compare()//比较字符串
10. size(), or length(), //返回字符数量
11. max_size(), // 返回字符可能的最大数
12. empty()// 判断字符串是否为空
13. capacity()//返回重新分配之前的字符容量
14. reserve()//保留一定量内存以容纳一定数量的字符
15. [], at()//访问单一字符
16. >>,getline()//从stream 中读取某值
17.<<// 将某值输出至stream
18.data(),// 将内容以字符数组形式返回
19. substr()//返回某个字符串
20. begin(), end()// 提供类似stl迭代器支持
21.rbegin(), rend()//逆向迭代器
22.get_allocator()//返回配置器
length()和size()等效。
调用:
string s = "hello";
cout<<s.length()<<endl;
输出5\n
max_size():
调用:
string s;
cout<<s.max_size()<<endl;
输出:1073741820\n
[],at():
调用:
string s = "hello";
有s[4] = 'o'.
s[s.length()]未定义,但是数据类型是const string时定义了,s[s.length()] = '\0'
compare():
调用:
string s = "abcd";
cout<<s.compare("abce")<<endl;
输出-1\n;
assign():
调用:
string s = "hello";
s.assign("world");//将s赋值为world
s.assign(str, 1, 3);//将s赋值为str[1]~str[3]
s.assign(5,'x');//将s赋值为5个x
s.assign("nico", 5);//将s赋值为“nico\0",若整数大于字符串长度+1,则后续出现乱码。
s.assign(str, 3, string::npos);//将s赋值为从str[3]开始直到末尾
append():
s+=str; or s.append(str);//在s尾部加入字符串。
s.append(str,1,3);//尾部加入str 的1~3位
其他和assign 解释类似,就是用途改为添加。
insert():
string s = "hello";
s.insert(2,”aaaa");//s == "heaaaallo",即在1,2之间插入。
不支持插入单个字符,可以用字符串形式插入。
这个函数貌似比较复杂,待研究。
earse() & replace():
string s = "i99n";
s.replace(1,2,"nternatio");//把从索引1开始的两个字符替换为最后的字符串,此时s="internation"
s.erase(2);//从索引2后全部删除,此时s = "in"
s.erase(3,5);//从索引3开始往后删除5个, s= "internn"
substr():
提取子串
s.substr();//返回s;
s.substr(11);//返回索引11以后的子串
s.substr(5,6);//返回索引5开始(就是包含索引5)的6个字符
查找搜索:
find(int first, int last, const type val)//从first 到last,返回第一个和val相等的元素的索引,无相同则返回last
rfind(int pos,const type val)//如果输入了pos,则从pos开始不包括pos位置从后往前搜索,返回第一个和val相等的元素的索引,否则返回一个数(我测试时返回的是469427695),如果不输入pos,则从末尾开始从后往前搜索。
find_first_of(),find_last_of(),find_first_not_of(),find_last_not_of(),见字面意思,与上面两个函数类似。
string s = "hello"
cout<<s.find('l')<<endl;
输出:2\n