标签:
string 由头文件<string>支持,支持的对象可以是字符也可以是宽字符
1、初始化
string str("1234567");
char ch[]="abcdefg";
string a;
string str_1(str);//使用str初始化
string str_2(str,2,5);//2,5 限定复制范围
string str_5(str.begin(),str.end());//迭代器的初始化
string str_3(ch,5);//ch数组的前5个元素赋值给str_3
string str_4(5,‘x‘);//初始化str_4有5个‘x‘
2.大小
1.返回实际字符的多少
cout<<str_1.size()<<endl;
cout<<str_1.length()<<endl;
cout<<str_1.max_size()<<endl;
3.capacity()
重新分配内存之前,string所能包含的最大字符数。
让string拥有足够的容量是很重要的,原因有二:
1、重新分配会造成所有指向string的references,pointer和iterators失效。
2、重新分配(reallocation)很耗时间。
因此,如果程序要用到指向string(或其内部字符)的references,pointers和iterators。抑或需要很快的执行速度,就必须考虑容量(capacity)问题。成员函数reserve()就是用来避免重分配行为。reserve()使你得以预留一定容量,并确保该容量尚有余裕之时,reference能够一直保持有效:
std::string s; // create empty string
s.reserve(80); // reserve memory for 80 characters
3.元素的随机访问,返回的是字符的引用
1)下标
cout<<str[3]<<endl;
2)at函数
cout<<str.at(3)<<endl;
4.比较
1)比较运算符>,<,>=,<=,==等,成立返回true ,否则返回false
2)compare() 函数,相同返回0,字典中A先于B,返回-1,否则返回正1
string A="aBcdEfg";
string B="AbcdeFg";
string C="123456";
string D="124354";
int m=A.compare(B);//A和整个B比较
int n=A.compare(1,5,B);//A中从1开始的5个字符和B比较
int p=A.compare(0,3,B,4,2);//A中0开始的3个字符和B中4开始的2个字符进行比较
5.修改和替换函数
1)assign()赋值
string str("1234567");
char ch[]="abcdefg";
string str1;
str1.assign(str);//利用str赋值
cout<<str1;
str1.assign(str,3,3);//利用str[3]个位置开始的3个字符赋值
cout<<str1;
str1.assign(str,2,str.npos);//利用str[2]开始到结束赋值
cout<<str1;
str1.assign(5,‘x‘);//利用5个x赋值
cout<<str1;
2)=赋值
3)erase()
str1.erase(str1.begin()+2);//删除开始以后的第二个元素
str.erase (10,8);//str[10]以后的8个元素
str1.erase(str1.begin()+2,str1.end()-3);//利用迭代器限制范围
标签:
原文地址:http://www.cnblogs.com/ranranblog/p/5620174.html