實戰c++中的string系列--string的串連(+= or append or push_back)

來源:互聯網
上載者:User

標籤:

string的串連也是經常用到的,string重載了一些運算子:
首先看一看重載+運算子,用於串聯兩個字串對象:
源碼:

template<class CharType, class Traits, class Allocator>   basic_string<CharType, Traits, Allocator> operator+(      const basic_string<CharType, Traits, Allocator>& _Left,      const basic_string<CharType, Traits, Allocator>& _Right   );template<class CharType, class Traits, class Allocator>   basic_string<CharType, Traits, Allocator> operator+(      const basic_string<CharType, Traits, Allocator>& _Left,      const CharType* _Right   );template<class CharType, class Traits, class Allocator>   basic_string<CharType, Traits, Allocator> operator+(      const basic_string<CharType, Traits, Allocator>& _Left,      const CharType _Right   );template<class CharType, class Traits, class Allocator>   basic_string<CharType, Traits, Allocator> operator+(      const CharType* _Left,      const basic_string<CharType, Traits, Allocator>& _Right   );template<class CharType, class Traits, class Allocator>   basic_string<CharType, Traits, Allocator> operator+(      const CharType _Left,      const basic_string<CharType, Traits, Allocator>& _Right   );template<class CharType, class Traits, class Allocator>    basic_string<CharType, Traits, Allocator>&& operator+(        const basic_string<CharType, Traits, Allocator>& _Left,        const basic_string<CharType, Traits, Allocator>&& _Right);template<class CharType, class Traits, class Allocator>   basic_string<CharType, Traits, Allocator>&& operator+(      const basic_string<CharType, Traits, Allocator>&& _Left,      const basic_string<CharType, Traits, Allocator>& _Right);template<class CharType, class Traits, class Allocator>   basic_string<CharType, Traits, Allocator>&& operator+(      const basic_string<CharType, Traits, Allocator>&& _Left,      const basic_string<CharType, Traits, Allocator>&& _Right);template<class CharType, class Traits, class Allocator>   basic_string<CharType, Traits, Allocator>&& operator+(      const basic_string<CharType, Traits, Allocator>&& _Left,      const CharType *_Right);template<class CharType, class Traits, class Allocator>   basic_string<CharType, Traits, Allocator>&& operator+(      const basic_string<CharType, Traits, Allocator>&& _Left,      CharType _Right);template<class CharType, class Traits, class Allocator>   basic_string<CharType, Traits, Allocator>&& operator+(      const CharType *_Left,      const basic_string<CharType, Traits, Allocator>&& _Right);template<class CharType, class Traits, class Allocator>   basic_string<CharType, Traits, Allocator>&& operator+(      CharType _Left,      const basic_string<CharType, Traits, Allocator>&& _Rig

所以使用時,注意事項:

#include<iostream>#include<string>int main(){    std::string my_str = "holiday";    std::string my_str_add = "error" + "error";//錯誤    std::string my_str_add2 = my_str + "right";    std::string my_str_add3 = my_str + "right" + "right";    std::string my_str_add4 = "right" + my_str;    std::string my_str_add5 = "error" + "error" + my_str;//錯誤    return 0;}

下面開始正題!
+=
*將字元追加到字串*

basic_string<CharType, Traits, Allocator>& operator+=(   value_type _Ch);basic_string<CharType, Traits, Allocator>& operator+=(   const value_type* _Ptr);basic_string<CharType, Traits, Allocator>& operator+=(   const basic_string<CharType, Traits, Allocator>& _Right);

append
*添加字元為字串的末尾*

basic_string<CharType, Traits, Allocator>& append(    const value_type* _Ptr);basic_string<CharType, Traits, Allocator>& append(    const value_type* _Ptr,    size_type _Count);basic_string<CharType, Traits, Allocator>& append(    const basic_string<CharType, Traits, Allocator>& _Str,    size_type _Off,    size_type _Count);basic_string<CharType, Traits, Allocator>& append(    const basic_string<CharType, Traits, Allocator>& _Str);basic_string<CharType, Traits, Allocator>& append(    size_type _Count,     value_type _Ch);template<class InputIterator>    basic_string<CharType, Traits, Allocator>& append(        InputIterator _First,         InputIterator _Last    );basic_string<CharType, Traits, Allocator>& append(    const_pointer _First,    const_pointer _Last);basic_string<CharType, Traits, Allocator>& append(    const_iterator _First,    const_iterator _Last);

有多個重載函數,因此多種使用方法:

   string str1a ( "Hello " );   const char *cstr1a = "Out There ";   str1a.append ( cstr1a );   string str1b ( "Hello " );   const char *cstr1b = "Out There ";   str1b.append ( cstr1b , 3 );   string str1c ( "Hello " ), str2c ( "Wide World " );      str1c.append ( str2c , 5 , 5 );   string str1d ( "Hello " ), str2d ( "Wide " ), str3d ( "World " );   str1d.append ( str2d );   str1d += str3d;   string str1e ( "Hello " );   str1e.append ( 4 , ‘!‘ );   string str1f ( "Hello " ), str2f ( "Wide World " );   str1f.append ( str2f.begin ( ) + 5 , str2f.end ( ) - 1 );

push_back
*將元素添加到該字串的末尾*

void push_back(    value_type _Ch);

這裡需要注意的是,以下代碼是錯誤的:

my_str.push_back("123");//錯誤my_str.push_back(‘1‘);//ok

實戰c++中的string系列--string的串連(+= or append or push_back)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.