標籤:
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)