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