String类型常用方法:
构造:
- string s(cp ,n) 字符串s是cp数组中前n个字符的拷贝
- string s(s1) 字符串s是s1的拷贝
- string s(s1,2) 字符串s是s1从第2位置元素的拷贝
- string s(s1,2,5) 字符串s是s1从第2位置元素拷贝,长度为5
const char* cp="Hello World";
string s(cp,5) //s="Hello"
string p = "hello world";
string s(p); //s="hello world"
string s(p,2); //s="llo world"
string s(p,2,5); //s="llo w"
substr操作:
返回一个string,它是原始string的一部分或全部的拷贝
- s.substr(pos,n) 从pos开始的n个字符的拷贝,pos默认值0,n默认值s.size()-pos,即从pos开始的所有。
其他方法:
- s.insert(pos,n,'x') 在pos之前插入n个x
- s.erase(pos,n) 从pos位置删除n个字符,如果n省略,则从pos删到末尾
- s.assign(args) s中的字符全用args替代,返回指向s的引用
- s.append(args) 将args追加到s,返回指向s的引用
- s.replace(range,args) 删除s中范围range内所有字符,用args替代,range:下标/长度/迭代器
搜索操作:
- s.find(args) 查找s中args第一次出现的位置
- s.rfind(args) 查找s中args最后一次出现的位置
- s.find_first_of(args) 在s中查找args中的任何一个字符第一次出现的位置
- s.find_last_of(args) 在s中查找args中的任何一个字符最后一次出现的位置
- s.find_first_not_of(args) 在s中查找第一个不在args中的字符
- s.find_last_not_of(args) 在s中查找最后一个不在args中的字符
compare函数:
返回0、正数或负数
- s.compare(s2) 比较s和s2
- s.compare(pos1,n1,s2) 将s1中pos1位置开始的n1个字符与s2相比
- s.compare(pos1,n1,s1,pos2,s2) 将s中pos1位置开始的n1个字符与pos2位置开始的n2个字符相比
- s.compare(cp) 比较s与cp指向的以空字符结尾的字符数组
- s.compare(pos1,n1,cp)
- s.compare(pos1,n1,cp,pos2,n2) 同上,指针cp指向的地址开始的字符
字符串类型与数值型相互转换:
数值型----->string型
- to_string(val) 将数值型数据val转换为string型
- stoi(s,p,b) 返回s的起始子串的数值,类型为int,b表示返回所用的基数,默认10
- stol(s,p,b) 返回s的起始子串的数值,类型为long
- stoul(s,p,b) 返回s的起始子串的数值,类型为unsigned long
- stoll(s,p,b) 返回s的起始子串的数值,类型为long long
- stoull(s,p,b) 返回s的起始子串的数值,类型为unsigned long long
- stof(s,p) float型
- stod(s,p) double型
- stold(s,p) long double型
int a = 4;
double b = 3.14;
string str1, str2;
str1 = to_string(a);
str2 = to_string(b);
string str=“17”;
int a=stoi(str);//输出a=17;
string------->数值型
- atoi
形参:const char* int atoi(const char *nptr)
在使用时需要用string.c_str()将string类型转换为const char *
没有安全性检查,如果输入字符串转换int超出了int范围[-2147483648, 2147483647],则会输出错误
如果结果超出了int的上界,则输出为上界的值2147483647,如果结果超出了下界,则输出为下界的值-2147483647
如果字符串无法转换为一个int或这个字符串为空,则会返回0。
string str=“17”; int a= atoi(str.c_str());//输出a=17;