STL是Standard Template Library的简称,中文名标准模板库,它是一些容器的集合,如string,map,vector,queue,stack等,同时它还包含了一些算法的模板函数,如algorithm。
本文介绍string头文件中的常用函数。
#include
#include
#include
using namespace std;
int main(){
string str1("abcdefghi");//直接赋值
string str2(str1);//把str1复制给str2
string str3("qwert",3);//将字符串的前3位赋给str3
string str4(6,'6');//6个6
string str5(str2,1,5);//从str2中从位置1开始取5个字符!!!注意0位置是a所以1位置是b
string str6(str4,3);//复制str4的前3个字符
cout<<"str1="<<str1<<endl;
cout<<"str2="<<str2<<endl;
cout<<"str3="<<str3<<endl;
cout<<"str4="<<str4<<endl;
cout<<"str5="<<str5<<endl;
cout<<"str6="<<str6<<endl;
return 0;
}
str.size();//计算str的大小
str.length();//计算str的长度
str.capacity();//计算str的空间大小
size和length数值相同。
capacity由初始化时决定。
如:
str="abcdefghi";
size,length,capacity的值相等都等于9。
resize重新设置字符串的大小。
如果str="abcdefghi";
那么str.resize(5)
操作后str=="abcde"
。
如果超过范围可以用str.resize(15,'a')
。
此时str=="abcdefghiaaaaaa"
。
a可以换成任意字符,注意只能是单个字符。
reserve重新设置字符串的空间,使用方法与resize一致。
当设置空间大小小于字符串长度时,不会进行操作。
#include
#include
using namespace std;
string str("abcdefghi");
int a=str.size();
int b=str.length();
int c=str.capacity();
void outputstr(){
a=str.size();
b=str.length();
c=str.capacity();
cout << "str=" << str <<endl;
cout << "str.size=" << a << endl;
cout << "str.length=" << b << endl;
cout << "str.capacity=" << c << endl;
}
int main(){
cout << "初始状态:\n";
outputstr();
str.resize(7);
cout << "改变长度后:\n";
outputstr();
str.reserve(19);
cout << "增加空间后:\n";
outputstr();
return 0;
}
at可以访问字符串某个下标的元素
str="abcdefghi";
//str.at(0)==a;
//str[0]==a;
输出时如果使用str[],当越界时输出空白。
但是使用str.at(),会提示越界。
如下图
使用append在末尾进行插入
使用方法和初始化括弧内的操作一样。
string str="abcdefghi";
string str1="ztx";
str.append(str1); //将str1插入到str末尾
str.append(str1,1,2); //将s2的从下标为1开始的两个字符插入到str末尾
str.append("ZTX"); //将ZTX插入到str末尾
str.append(3,'2'); //将3个2插入到str末尾
使用insert在指定位置进行插入
string str("abcd");
string str1("ZTX");
str.insert(2,str1);//在下标为2的位置插入str1插入后为abcZTXd
str.insert(2,"ztx");//在下标为2的位置插入ztx插入后为abcztxZTXd
empty的使用方法
str.empty()//若str为空,返回1,否则返回0;
compare的使用方法
str.compare(str1)//比较str和str1
//如果str>str1 返回大于0
//如果str=str1 返回0
//如果str
//比较方法为从头开始依次比较,按照ASCII进行比较
copy的使用方法
string str("abcdefghi);
char str1[99];
str.copy(str1,6,0)
//str中从0开始的6个字符复制给字符数组str1
find的使用方法
string str("abcdefghi");
string str1("ghi");
cout<< str.find('i') <<endl; //查询是否有i返回下标
cout<< str.find("abc") <<endl; //查询是否有abc返回a的下标
cout<< str.find(str1,0) <<endl;//从0开始查询是否有str1返回下标
repace的使用方法
string str("Good morning!");
string str("afternoon");
str.replace(5,7,str1);
cout<<"str="<<str<<endl;
结果输出Good afternoon!
substr的使用方法
string str("Good morning!");
cout<<str.substr(3,6)<<endl;
结果输出d morn
即函数返回字符串中从下标3开始6个字符。
swap的使用方法
string str("Good morning!");
string str1("Good afternoon!");
str.swap(str1);//当然使用swap(str,str1)效果相同
cout<<"str="<<str<<endl;
cout<<"str1="<<str1<<endl;
结果显而易见str与str1交换。
erase的使用方法
string str("Good morning!");
str.erase(0,5);//删除从下标0开始的5个字符
cout<<"str="<<str<<endl;
输出结果为morning!
assign的使用方法
assign用于赋值。
初始化时赋值运算符=,相当于对assign的一个简单包装,效果相同,在初始化之后,是用assign对字符串进行重新赋值。
string str1("Good afternoon!");
string str("Good morning!");
str.assign(str1);//将str1赋值给str
cout << str << endl;
str.assign("abcdef",4);//取所给字符串中的前4个字符
cout << str << endl;
str.assign(str1,8,2);//取str1中的下标为8开始的2个字符
cout << str << endl;
str.assign(3,'a');//取3个a
cout << str << endl;