程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 實戰c++中的string系列--string的連接(+= or append or push_back)

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

編輯:C++入門知識

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


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

template
   basic_string operator+(
      const basic_string& _Left,
      const basic_string& _Right
   );
template
   basic_string operator+(
      const basic_string& _Left,
      const CharType* _Right
   );
template
   basic_string operator+(
      const basic_string& _Left,
      const CharType _Right
   );
template
   basic_string operator+(
      const CharType* _Left,
      const basic_string& _Right
   );
template
   basic_string operator+(
      const CharType _Left,
      const basic_string& _Right
   );
template
    basic_string&& operator+(
        const basic_string& _Left,
        const basic_string&& _Right
);
template
   basic_string&& operator+(
      const basic_string&& _Left,
      const basic_string& _Right
);
template
   basic_string&& operator+(
      const basic_string&& _Left,
      const basic_string&& _Right
);
template
   basic_string&& operator+(
      const basic_string&& _Left,
      const CharType *_Right
);
template
   basic_string&& operator+(
      const basic_string&& _Left,
      CharType _Right
);
template
   basic_string&& operator+(
      const CharType *_Left,
      const basic_string&& _Right
);
template
   basic_string&& operator+(
      CharType _Left,
      const basic_string&& _Rig

所以使用時,注意事項:

#include
#include

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& operator+=(
   value_type _Ch
);
basic_string& operator+=(
   const value_type* _Ptr
);
basic_string& operator+=(
   const basic_string& _Right
);

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

basic_string& append(
    const value_type* _Ptr
);
basic_string& append(
    const value_type* _Ptr,
    size_type _Count
);
basic_string& append(
    const basic_string& _Str,
    size_type _Off,
    size_type _Count
);
basic_string& append(
    const basic_string& _Str
);
basic_string& append(
    size_type _Count, 
    value_type _Ch
);
template
    basic_string& append(
        InputIterator _First, 
        InputIterator _Last
    );
basic_string& append(
    const_pointer _First,
    const_pointer _Last
);
basic_string& 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

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