码迷,mamicode.com
首页 > 其他好文 > 详细

String类的操作

时间:2016-06-27 15:41:38      阅读:166      评论:0      收藏:0      [点我收藏+]

标签:

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;

2.max_size()最多包含则字符数

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);//利用迭代器限制范围

 

String类的操作

标签:

原文地址:http://www.cnblogs.com/ranranblog/p/5620174.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!