string基本字符系列容器(一)

2014-11-23 23:26:38 · 作者: · 浏览: 0

C++STL提供了string基本字符系列容器来处理字符串,可以把string理解成字符串类,它提供了添加,删除,替换,查找和比较等丰富的方法。

使用string容器,需要头文件包含声明#include


创建string对象

创建一个字符串对象s,s是一个空字符串,长度为0.

#include
  
   
#include
   
     using namespace std; int main() { string s; cout<
    
     

给string对象赋值

(1)直接给字符串对象赋值

#include
      
       
#include
       
         using namespace std; int main() { string s = "Hello C++STL"; cout<
        
         
(2)把字符指针赋给一个字符串对象

#include
          
           
#include
           
             using namespace std; int main() { char c[] = "Hello C++STL"; string s = c; //将字符指针赋给一个字符串对象 cout<
            
             

从string对象尾部添加字符和字符串

(1)采用”+“操作符,可以在string对象的尾部添加字符或者字符串

#include
              
               
#include
               
                 using namespace std; int main() { string s = "Hello "; s = s+'c'+'+'+'+'+"STL"; cout<
                
                 
(2)还可以使用append方法在string对象的尾部添加字符串(不适用于字符)

#include
                  
                   
#include
                   
                     using namespace std; int main() { string s = "Hello "; s.append("C++STL"); cout<
                    
                     

给string对象插入字符

可以使用insert方法把一个字符插入到迭代器之前(并不适用于字符串)

#include
                      
                       
#include
                       
                         using namespace std; int main() { string s = "abcde"; string::iterator it = s.begin(); s.insert(it+2,'i'); cout<
                         
                         


输出结果:abicde


访问string对象的元素

一般使用下标方式随机访问string对象的元素,下标是从0开始计数的,string对象的元素是一个字符(char)

当然也可以使用迭代器进行访问,但是string的迭代器一般不用来访问元素,而是对其中的元素进行删除,插入和替换操作的时候作为参数。

#include
                          
                           
#include
                           
                             using namespace std; int main() { string s = "abcde"; cout<
                            
                             
输出字符c


删除string对象的元素

(1)清空一个字符串,则直接赋给它一个空字符串即可。

(2)使用erase()方法删除迭代器所指的那个元素或一个区间中的所有元素

#include
                              
                               
#include
                               
                                 using namespace std; int main() { string s = "abcdefgh"; string::iterator it = s.begin(); s.erase(it+3); cout<
                                
                                 
输出结果:

abcefgh
abgh
length:0
empty:1


返回string对象的长度

采用length()或者size()方法可以获取string对象的长度(字符的个数),而empty()方法可以用来判断string对象是否为空,为空则返回1,不为空则返回0.

#include
                                  
                                   
#include
                                   
                                     using namespace std; int main() { string s = "abcdefgh"; cout<<"length:"<
                                    
                                     

替换string对象的字符

使用replace()方法可以很方便的替换string对象中的字符,常用是使用三个参数,第一个是要替换的字符的开始下标,第二个是要替换的字符的个数,第三个是用于替换的字符串。

#include
                                      
                                       
#include
                                       
                                         using namespace std; int main() { string s = "abcdefgh"; s.replace(1,3,"xy"); cout<
                                         
                                         

输出结果:axyefgh


搜索string对象的元素或子串

采用find()方法可查找字符串中的第一个字符元素(char,用单引号界定)或者子串(用双引号界定),如果查到则返回下标值(从0开始计数),如果查不到,则返回string::npos

#include
                                          
                                           
#include
                                           
                                             using namespace std; int main() { string s = "ab cdefgh"; if(s.find(' '))cout<<"字符空格在string中出现"<
                                            
                                             

程序输出结果:

字符空格在string中出现
字符串def在string中出现
字符串qianshou没有在string中出现


string对象的比较

可以直接使用‘>'和‘<'对两个string对象进行比较,结果为TRUE或者FALSE;还可以使用compare方法与其他字符串比较,如果它比对方大则返回1,如果它比对象小则返回-1,如果相等则返回0.

#include
                                              
                                               
#include
                                               
                                                 using namespace std; int main() { string s1 = "123"; string s2 = "234"; if(s1>"111")cout<
                                                
                                                 "<<"111"<
                                                 
                                                  

输出结果为:

123>111
123<234
1
-1


使用reverse反响排序string对象

使用reverse()方法可以将string对象迭代器所指向的一段区间中的元素(字符)反向排序。reverse()方法需要声明头文件#include

#include
                                                   
                                                    
#include
                                                    
                                                      #include
                                                     
                                                       using namespace std; int main() { string s = "a9b2c7"; reverse(s.begin(),s.end()); cout<
                                                      
                                                       

输出结果:

7c2b9a