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和本字符串交換