头文件---> #include<string>
常用函数
string s;
获取字符串的字符个数
s.size()
返回s中的字符的个数
判断字符串是否为空
s.empty()
s为空返回true,否则返回false
1.子字符串操作
s.substr(pos,n)
返回一个string,包含s中从pos开始的n个字符的拷贝(pos的默认值为0,n的默认值为s.size()-pos,即拷贝从pos开始的所有字符)
string s = "abcdef";
string a = s.substr();//abcdef
string b = s.substr(1);//bcdef
string c = s.substr(0, 3);//abc
string d = s.substr(2, -1);//cdef,忽略-1
string f = s.substr(-1);//错误!
2.修改string的操作
s.insert(pos,args)
在pos之前插入args指定的字符。pos可以是一个下标或一个迭代器。接受下标的版本返回一个指向s的引用;接受迭代器的版本返回指向第一个插入字符的迭代器。
string s = "abcdef",a,b,c,d,e;
a = b = c = d = e = s;
s.insert(0, "A");//Aabcdef
a.insert(2, "B");//abBcdef
b.insert(b.size(), "C");//abcdefC
c.insert(0, 3, '!');//!!!abcdef 在c的首位置插入3个!
d.insert(d.begin(), 'D');//Dabcdef
e.insert(0, 'E');//编译错误 无此重载
s.erase(pos,len)
删除从位置pos开始的len个字符。如果len被省略,则删除从pos开始直至s末尾的所有字符。返回一个指向s的引用
string s = "abcde",a,b,c,d;
a = b = c = d = s;
s.erase();//"" 全部删除
a.erase(0, 1);//"bcde" 从0开始的1个字符
b.erase(3);//"abc" 从3开始的所有字符
c.erase(3, 1);//"abce" 从3开始的一个字符
d.erase(3, -3);//"abc" 从3开始的所有字符(负数不起作用,不会导致删除指定索引前的元素)
s.assign(args)
将s中的字符替换为args指定的字符。返回一个指向s的引用
string s = "abcdef",a,b,c,d,e;
a = b = c = d = e = s;
s.assign("bca");//bca
a.assign(s);//bca
b.assign(2,'@');//@@
c.assign(b.begin(), b.end());//@@
s.append(args)
将args追加到s。返回一个指向s的引用
string s = "abcdef",a,b,c,d,e;
a = b = c = d = e = s;
s.append("123", 0,2);//abcdef12
a.append(2, '#');//abcdef##
b.append("$$");//abcdef$$
s.replace(range,args)
删除s中范围range内的字符,替换为args指定的字符。range或者是一个下标和一个长度,或者是一对指向s的迭代器。返回一个指向s的引用
string s = "abcdef",a,b,c,d,e;
a = b = c = d = e = s;
s.replace(0, s.size(), "aa");//aa
a.replace(a.begin(), a.end(), "bb");//bb
b.replace(0,2,"cc");//cccdef
c.replace(0, 2, 2, 'd');//ddcdef
args可以是下列形式之一;append和assign可以使用所有形式
str不能与s相同,迭代器b和e不能指向s
str(字符串str)
str,pos,len(str中从pos开始最多len个字)
cp,len(从cp指向的字符数组的前(最多)len个字符)
cp(cp指向的以空字符结尾的字符数组)
n,c(n个字符c)
b,e(迭代器b和e指定的范围内的字符)
初始化列表(花括号包围的,以逗号分割的字符列表)
3.string的搜索操作
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中的字符
4.string和数值之间的转换
to_string(val)
一组重载函数,返回数值val的string表示。val可以是任何算数类型。对每个浮点类型和int或更大的整型,都有相应版本的to_string(小整型会被提升)
int a = 10;
cout << to_string(a) << endl;//"10"
double b = 13.2;
cout << to_string(b) << endl;//"13.200000"
cout << to_string(b)[2]<< endl;//"."
short c = 21;
cout << to_string(c) << endl;//"21"
long d = 8999999;
cout << to_string(d) << endl;//"8999999"
float e = 11.32;
cout << to_string(e) << endl;//"11.320000"
int stoi(s,p,b)
long stol(s,p,b)
unsigned long stoul(s,p,b)
long long stoll(s,p,b)
unnsigned long long stoull(s,p,b)
返回s的起始子串(表示整数内容)的数值,b表示转换所用的基数,默认值为10,p是size_t指针,用来保存s中第一个非数值字符的下标,p默认值为0,即函数不保存下标
cout << typeid(stoi(a)).name() << endl;//int
cout << typeid(stoll(a)).name() <<stoi(d)<< endl;//__int64 12
float stof(s,p)
double stod(s,p)
long double stold(s,p)
返回s的起始子串(表示浮点数内容)的数值,参数p的作用于整数转换函数相同
cout << typeid(stod(b)).name() << endl;//double
cout << typeid(stof(c)).name() << endl;//float