程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ string類型詳解

C++ string類型詳解

編輯:C++入門知識

string是非常強大的類型,很好的封裝了字符串的操作,有些時候我們可以把string當做字符的容器,string也支持大多數容器操作,下面就列出string類型所支持的所有操作,本文並不是為了講解string的用法和應用,而是希望作為string類型的參考文檔,每個函數皆在注釋後有詳細說明,需要用時查閱即可。

string操作如下:

構造函數:
    string();//空串
    string( size_type length, char ch );//以length為長度的ch的拷貝(即length個ch)
    string( const char *str );//以str為初值 (長度任意)
    string( const char *str, size_type length );//同上,長度不限,但注意不要越界,以免發生不可預知問題
    string( string &str, size_type index, size_type length );//以index為索引開始的子串,長度為length, 或者小於length
    string( input_iterator start, input_iterator end );//以從start到end的元素為初值

支持的操作符:
    ==
    >
    <
    >=
    <=
    !=
    +
    +=
    []

追加文本(append)
    basic_string &append( const basic_string &str );//在字符串的末尾添加str
    basic_string &append( const char *str );//在字符串末尾添加str所指向的c風格字符串
    basic_string &append( const basic_string &str, size_type index, size_type len );//在字符串的末尾添加str的子串,子串以index索引開始,長度為len
    basic_string &append( const char *str, size_type num );//在字符串的末尾添加str中的num個字符
    basic_string &append( size_type num, char ch );//在字符串的末尾添加num個字符ch
    basic_string &append( input_iterator start, input_iterator end );//在字符串的末尾添加以迭代器start和end表示的字符序列

賦值(assign)
    basic_string &assign( const basic_string &str );//用str為字符串賦值
    basic_string &assign( const char *str );//用str c風格為字符串賦值
    basic_string &assign( const char *str, size_type num );//用str的開始num個字符為字符串賦值
    basic_string &assign( const basic_string &str, size_type index, size_type len );//用str的子串為字符串賦值,子串以index索引開始,長度為len
    basic_string &assign( size_type num, char ch );//用num個字符ch為字符串賦值

比較(compare)
    int compare( const basic_string &str );//比較自己和str
    int compare( const char *str );//比較自己和str
    int compare( size_type index, size_type length, const basic_string &str );//比較自己的子串和str,子串以index索引開始,長度為length
    int compare( size_type index, size_type length, const basic_string &str, size_type index2,
    size_type length2 );//比較自己的子串和str的子串,其中index2和length2引用str,index和length引用自己
    int compare( size_type index, size_type length, const char *str, size_type length2 );//比較自己的子串和str的子串,其中str的子串以索引0開始,長度為length2,自己的子串以index開始,長度為length
    返回值        情況

    小於零        this < str
    零                this == str
    大於零        this > str

刪除(erase)
    iterator erase( iterator pos );//刪除pos指向的字符, 返回指向下一個字符的迭代器
    iterator erase( iterator start, iterator end );//刪除從start到end的所有字符, 返回一個迭代器,指向被刪除的最後一個字符的下一個位置
    basic_string &erase( size_type index = 0, size_type num = npos );//刪除從index索引開始的num個字符, 返回*this

插入(insert)
    iterator insert( iterator i, const char &ch );//在迭代器i表示的位置前面插入一個字符ch
    basic_string &insert( size_type index, const basic_string &str );//在字符串的位置index插入字符串str
    basic_string &insert( size_type index, const char *str );//在字符串的位置index插入字符串str
    basic_string &insert( size_type index1, const basic_string &str, size_type index2, size_type num );//在字符串的位置index插入字符串str的子串(從index2開始,長num個字符)
    basic_string &insert( size_type index, const char *str, size_type num );//在字符串的位置index插入字符串str的num個字符
    basic_string &insert( size_type index, size_type num, char ch );//在字符串的位置index插入num個字符ch的拷貝
    void insert( iterator i, size_type num, const char &ch );//在迭代器i表示的位置前面插入num個字符ch的拷貝
    void insert( iterator i, iterator start, iterator end );//在迭代器i表示的位置前面插入一段字符,從start開始,以end結束

替換(replace)
    basic_string &replace( size_type index, size_type num, const basic_string &str );//用str中的num個字符替換本字符串中的字符,從index開始
    basic_string &replace( size_type index1, size_type num1, const basic_string &str, size_type index2,
    size_type num2 );//用str中的num2個字符(從index2開始)替換本字符串中的字符,從index1開始,最多num1個字符
    basic_string &replace( size_type index, size_type num, const char *str );//用str中的num個字符(從index開始)替換本字符串中的字符
    basic_string &replace( size_type index, size_type num1, const char *str, size_type num2 );//用str中的num2個字符(從index2開始)替換本字符串中的字符,從index1開始,num1個字符
    basic_string &replace( size_type index, size_type num1, size_type num2, char ch );//用num2個ch字符替換本字符串中的字符,從index開始,num1個字符
    basic_string &replace( iterator start, iterator end, const basic_string &str );//用str中的字符替換本字符串中的字符,迭代器start和end指示范圍
    basic_string &replace( iterator start, iterator end, const char *str );//用str替換本字符串中的內容,迭代器start和end指示范圍
    basic_string &replace( iterator start, iterator end, const char *str, size_type num );//用str中的num個字符替換本字符串中的內容,迭代器start和end指示范圍
    basic_string &replace( iterator start, iterator end, size_type num, char ch );//用num個ch字符替換本字符串中的內容,迭代器start和end指示范圍

查找
    一下各種find函數十分相似,所以就不一一注釋了
    返回值:如果沒找到則返回string::npos

find:
    size_type find( const basic_string &str, size_type index );//返回str在字符串中第一次出現的位置(從index開始查找)
    size_type find( const char *str, size_type index );//返回str在字符串中第一次出現的位置(從index開始查找)
    size_type find( const char *str, size_type index, size_type length );//返回str在字符串中第一次出現的位置(從index開始查找,長度為length)
    size_type find( char ch, size_type index );//返回字符ch在字符串中第一次出現的位置(從index開始查找)

find_first_of:查找在字符串中第一個與str中的某個字符匹配的字符
    size_type find_first_of( const basic_string &str, size_type index = 0 );
    size_type find_first_of( const char *str, size_type index = 0 );
    size_type find_first_of( const char *str, size_type index, size_type num );
    size_type find_first_of( char ch, size_type index = 0 );

find_first_not_of:在字符串中查找第一個與str中的字符都不匹配的字符                     
    size_type find_first_not_of( const basic_string &str, size_type index = 0 );
    size_type find_first_not_of( const char *str, size_type index = 0 );
    size_type find_first_not_of( const char *str, size_type index, size_type num );
    size_type find_first_not_of( char ch, size_type index = 0 );

find_last_of:在字符串中查找最後一個與str中的某個字符匹配的字符
  size_type find_last_of( const basic_string &str, size_type index = npos );
  size_type find_last_of( const char *str, size_type index = npos );
  size_type find_last_of( const char *str, size_type index, size_type num );
  size_type find_last_of( char ch, size_type index = npos );

find_last_not_of:在字符串中查找最後一個與str中的字符都不匹配的字符
    size_type find_last_not_of( const basic_string &str, size_type index = npos );
    size_type find_last_not_of( const char *str, size_type index = npos);
    size_type find_last_not_of( const char *str, size_type index, size_type num );
    size_type find_last_not_of( char ch, size_type index = npos );

rfind函數
  size_type rfind( const basic_string &str, size_type index );//返回最後一個與str中的某個字符匹配的字符,從index開始查找
  size_type rfind( const char *str, size_type index );//返回最後一個與str中的某個字符匹配的字符,從index開始查找
  size_type rfind( const char *str, size_type index, size_type num );//返回最後一個與str中的某個字符匹配的字符,從index開始查找,最多查找num個字符
  size_type rfind( char ch, size_type index );//返回最後一個與ch匹配的字符,從index開始查找

at函數
     reference at( size_type index );//at()函數返回一個引用,指向在index位置的字符. 如果index不在字符串范圍內, at() 將報告"out of range"錯誤,並拋出out_of_range異常

begin函數
    iterator begin();//begin()函數返回一個迭代器,指向字符串的第一個元素

end函數
    iterator end();//返回一個迭代器,指向字符串的末尾(最後一個字符的下一個位置)

c_str函數
    const char *c_str();//返回一個指向正規C字符串的指針, 內容與本字符串相同

capacity函數
    size_type capacity();//返回在重新申請更多的空間前字符串可以容納的字符數. 這個數字至少與 size()一樣大

copy函數
    size_type copy( char *str, size_type num, size_type index );//拷貝自己的num個字符到str中(從索引index開始)。返回值是拷貝的字符數

data函數
    const char *data();//返回指向自己的第一個字符的指針

empty函數
    bool empty();//如果字符串為空則empty()返回真(true),否則返回假(false)

get_allocator函數
    allocator_type get_allocator();//返回本字符串的配置器

length函數
    size_type length();//返回字符串的長度. 這個數字應該和size()返回的數字相同

max_size
    size_type max_size();//返回字符串能保存的最大字符數

rbegin函數
    rbegin();//返回一個逆向迭代器,指向最後一個字符

rend函數
    rend();//返回一個逆向迭代器,指向第一個元素的前一個位置

reserve函數
    reserve( size_type num );//保留一定容量以容納字符串(設置capacity值)

resize函數
  void resize( size_type num );//改變本字符串的大小到num, 新空間的內容不確定
  void resize( size_type num, char ch );//也可以指定用ch填充

size函數
    size();//返回字符串中字符的數量

substr函數
     basic_string substr( size_type index, size_type num = npos );//返回本字符串的一個子串,從index開始,長num個字符。如果沒有指定,將是默認值 string::npos。這樣,substr()函數將簡單的返回從index開始的剩余的字符串
 
swap函數
    void swap( basic_string &str );//把str和本字符串交換


作者:RO_wsy

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved