C++基础教程面向对象(学习笔记(99))

std :: string追加

追加

使用operator + =,append()或push_back()函数可以轻松地将字符串附加到现有字符串的末尾。

string&string :: operator + =(const string&str)
string&string :: append(const string&str)
//这两个函数都将str的字符附加到字符串。
//两个函数都返回*这样它们可以被“链接”。
//如果结果超过最大字符数,则两个函数都会抛出length_error异常。
//示例代码:
string sString("one");
 
sString += string(" two");
 
string sThree(" three");
sString.append(sThree);
 
cout << sString << endl;
//输出:

one two three

还有一种append()可以附加一个子字符串:

string&string :: append(const string&str,size_type index,size_type num)
//此函数将str中的num个字符从index开始附加到字符串。
//返回*这样就可以“链接”了。
//如果索引超出范围,则抛出out_of_range
//如果结果超过最大字符数,则抛出length_error异常。
//示例代码:
string sString("one ");
 
const string sTemp("twothreefour");
sString.append(sTemp, 3, 5); // append substring of sTemp starting at index 3 of length 5
cout << sString << endl;
//输出:

one three

Operator + =和append()也有适用于C风格字符串的版本:

string&string :: operator + =(const char * str)
string&string :: append(const char * str)
//这两个函数都将str的字符附加到字符串。
//两个函数都返回*这样它们可以被“链接”。
//如果结果超过最大字符数,则两个函数都会抛出length_error异常。
//str不应该为NULL。
//示例代码:
string sString("one");
 
sString += " two";
sString.append(" three");
cout << sString << endl;
输出:

one two three

还有一种附加风格的append()适用于C风格的字符串:

string&string :: append(const char * str,size_type len)
//将str的前len个字符追加到字符串中。
//返回*这样它们可以被“链接”。
//如果结果超过最大字符数,则抛出length_error异常。
//忽略特殊字符(包括“)
//示例代码:
string sString("one ");
 
sString.append("threefour", 5);
cout << sString << endl;
//输出:

one three

此功能很危险,不建议使用它。

还有一组附加字符的函数。注意附加一个字符的非操作符函数的名称是push_back(),而不是append()!

string&string :: operator + =(char c)
void string :: push_back(char c)
//两个函数都将字符c附加到字符串。
//运算符+ =返回*这样它就可以“链接”。
//如果结果超过最大字符数,则两个函数都会抛出length_error异常。
//示例代码:
string sString("one");
 
sString += ' ';
sString.push_back('2');
cout << sString << endl;
//输出:

one 2

现在您可能想知道为什么函数的名称是push_back()而不是append()。这遵循用于堆栈的命名约定,其中push_back()是将单个项添加到堆栈末尾的函数。如果您将字符串设想为字符堆栈,则使用push_back()将单个字符添加到末尾是有意义的。但是,在我看来,缺少append()函数是不一致的!

事实证明,对于字符有一个append()函数,如下所示:

string&string :: append(size_type num,char c)
//将字符c的num个出现添加到字符串中
//返回*这样就可以“链接”了。
//如果结果超过最大字符数,则抛出length_error异常。
//示例代码:
string sString("aaa");
 
sString.append(4, 'b');
cout << sString << endl;
//输出:

aaabbbb

除非你知道迭代器是什么,否则你将无法理解append()的最后一种风格。如果您不熟悉迭代器,则可以忽略此函数。

string&string :: append(InputIterator start,InputIterator end)

追加 [start, end)范围内的所有字符(包括启动但不包括结束)
返回*这样就可以“链接”了。
如果结果超过最大字符数,则抛出length_error异常。

猜你喜欢

转载自blog.csdn.net/qq_41879485/article/details/84872169
今日推荐