string
是C++标准库中的类,纯C中没有,使用时需要包含头文件#include,也可直接使用万能头文件#include<bits/stdc++.h>
String的定义及初始化
string s1 = "hello"; //初始化字符串
string s2 ("world"); //另一种初始化
string s3; //初始化字符串,空字符串
string s4(5, 'a'); //s4由连续5个a组成,即s4="aaaaa";
string s5(s1,2,3); //从s1的2位置的字符开始,连续3个字符赋值给s5,即s5="llo";
string s6(s1, 1); //从s1的2位置的字符开始,将后续的所有字符赋值给s6,即s6="ello";
String的输入方式:
当使用C++的cin读入字符串时,程序遇到空白字符就停止读取了。
1、直接使用cin输入 比如程序输入是:
" hello world"
那么当我们使用如下代码时,s1得到的只是"hello"。
string s1;
cin>>s1;
2、如果我们想读取一整行输入,包括空格及空格后面的字符,我们可以使用getline。
string str;
getline(cin, str);
cout << str << endl;
重载的运算符
此处列举一下被重载的运算符,基本意思一目了然。其中注意“+”操作
s1 = s2;//其作用与“strcpy(string1,string2);”相同(后面有介绍strcpy函数)
s1 += s2;
s1 = s2 + s3;
s1 == s2;
s1 = "s" + s2; //正确
s1 = "s" + "s"; //错误,加号两边至少要有一个string类型的对象
s1 = "s" + s2 + "s" + "s"; //正确
简单的说:就是按照数学思维进行运算 (前提是“+”两边必须有一个是string类型的变量)
除此之外,还有‘+’,‘+=’,‘=’语句;
遍历string(迭代器)
遍历string中的元素时,我们可以使用类似C中的数组形式访问,如s11
cout << *(s1.begin()); //正确,
即访问s1[0]cout << *(s1.end()); //错误,
s1.end()指向了空若想要从后向前遍历string时,可以用到rbegin()和rend()函数。
也可以使用STL特有的迭代器访问:
string::iterator it;
for (it = s1.begin(); it != s1.end(); it++)
{ cout << *it << endl;}
常用函数
插入insert()
string s1 = "hello";
s1.insert(1,"ins"); //从s1的1位置开始,插入"ins"字符串,即s1="hinsello";
s1.insert(1, "ins", 2); //从s1的1位置开始,插入"ins"字符串的前2个字符,即s1="hinello";
s1.insert(1, "ins", 1, 2); //从s1的1位置开始,插入"ins"字符串的从1位置开始的2个字符,即s1="hnsello";
insert(iterator it, char c); //在it处插入字符c,返回插入后迭代器的位置
删除erase()
s1. erase(first, last); //删除[first,last)之间的所有字符,返回删除后迭代器的位置
s1.erase(it); //删除it指向的字符,返回删除后迭代器的位置
s1. erase(int pos = 0, int n = npos); //删除pos开始的n个字符,返回修改后的字符串
查找 find()
cout << s.find("aa", 0) << endl; //返回的是子串位置。第二个参数是查找的起始位置,如果找不到,就返回string::npos
if (s.find("aa1", 0) == string::npos)
{
cout << "找不到该子串!" << endl;
}
清空clear()
s1.clear()删除所有元素
判空empty()
s1.empty()如果 s 为空则返回true ,否则为false;
开头 begin()
s1.begin() 返回指向map头部的迭代器
末尾end()
s1.end()返回指向map末尾的迭代器
截取substr().
s.substr( i , length); //从 i 位置截取length长度的字符串 ,不加length表示,从指针处到末尾;
其它子函数
equal_range() 返回特殊条目的迭代器对
get_allocator() 返回map的配置器
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数