string的连接(+= or append or push_back)

最后更新于:2022-04-01 06:41:44

##实战c++中的string系列--string的连接(+= or append or push_back) 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 ~~~
';