string 类型在头文件 string 内,定义在 std 命名空间中。
定义和初始化
string s1;
string s2(s1); //拷贝初始化
string s2=s1; //同上
string s3("hello world "); //使用字面值初始化
string s4(10,'c'); //使用连续10个 c 初始化
操作
getline(is,s); //从 is 中读取一行赋给s,返回is
s.empty(); //判断 s 是否为空
s.size(); //返回 s 中字符个数
s1+s1; //返回 s1 和s2 连接后的字符串
s.append() //在末尾添加新字符串
s.find() //返回字符串或字符在 s 中第一次出现的位置,如果没找到返回string::npos
s.rfind() //逆序查找
额外的string操作
构造的其他方法:
string s(cp,n) //s是cp指向数组中前n个字符的拷贝。此数组至少应该包含n个字符
string s(s2,pos2) //s是string s2 从下标pos2开始的字符的拷贝
string s(s,pos2,len2) //拷贝len2个字符
substr操作:
substr(t) //拷贝从t后字符
substr(t,n) //拷贝从t后n个字符
改变string的方法:
s.insert(s.size(),5,'!'); //在s末尾插入5个感叹号
s.erase(s.size()-5,5); //删除最后5个字符
const char *cp="Stately, plump Buck";
s.assign(cp,7); //s=="Stately"
s.insert(s.size(),cp+7); //s==*cp
append和replace函数:
append(args) //将args追加到原字符串
replace(t,n,s) //在t处删除n个字符,插入s
搜索操作:
s.find(args) //查找s中args第一次出现的位置
s.rfind(args) //查找s中args最后一次出现的位置
s.find_first_of(args) //查找s中args中任意一个字符第一次出现的位置
s.find_last_of(args) //查找最后一次位置
s.find_first_not_of(args) //查找第一次没出现的位置
s.find_last_not_of(args) //查找最后一次没出现的位置
args为 c,pos,n,c为字符或字符串,pos为开始查找的位置,默认为0,n为查找前n个字符
比较操作
s1.compare(pos1,n1,s2,pos2,n2) //将s1中从pos1开始的n1个字符和s2中从pos2开始的n2个字符比较
数值转换
to_string(val) //一组重载函数,返回val的string表示,val可以是任何算术类型
stoi(s,p,b) //返回s的起始子串的数值,b表示转换所用基数,默认为10,p是size_t指针,用来保存s中第一个非数值字符的下表,p默认0。