说明:
1)原型(8)与list容器有关,是C++11新标准,这里赞不详述。
2)以上原型中出现的返回值和参数有iterator和InputIterator与迭代器有关,这里也暂不详述,可以将其简单地理解为指针,begin()和end()的返回值与它们匹配。
示例:
#include<iostream>
#include<string>
using namespace std;
int main()
{
/*
*测试basic_string& insert (size_type pos, const basic_string& str);
*/
string st1("123456789");
//string st2("123456789");
string str1("abc");
st1.insert(3, str1);
cout << st1 << endl;//123abc456789 注意是在pos所指位置前插入
//st2.insert(10, str1);//超出范围
//cout << st2 << endl;//不可以
/*
**测试basic_string& insert (size_type pos, const basic_string& str,size_type subpos, size_type sublen);
*/
string st2("123456789");
string st3("123456789");
string str2("abcdefg");
st2.insert(3, str2, 2, 3);
cout << st2 << endl;//123cde456789
st3.insert(3, str2, 4, 9);//超出范围
cout << st3 << endl;//123efg456789 可见如果超出字符串的长度,则一直到字符串的最后,不补空格
/*
**测试basic_string& insert (size_type pos, const charT* s);
*/
string st4("123456789");
string st5("123456789");
char* str3 = "abc";
st4.insert(3, str3);
cout << st4 << endl;//123abc456789
st5.insert(3, "abc");
cout << st5 << endl;//123abc456789
/*
**测试basic_string& insert (size_type pos, const charT* s, size_type n);
*/
string st6("123456789");
string st7("123456789");
st6.insert(3, "abcdefg", 3);//n可以为0,为0时什么也不加 当n为负值时会出现运行时错误
cout << st6 << endl;//123abc456789
st7.insert(3, "abcdefg", 20);//超出范围
cout << st7 << endl;//123abcdefg i n v a l i 456789 调大n值(如500)进行测试,发现中间多出来的是报错的语句和乱码,且每次运行的输出可能不一样
//CodeBlocks12.11上中间直接就是乱码
/*
**测试basic_string& insert (size_type pos, size_type n, charT c); 和 iterator insert (const_iterator p, size_type n, charT c);
*/
string st8("123456789");
string st9("123456789");
st8.insert(3, 2, 'a');
cout << st8 << endl;//123aa456789
st9.insert(st9.begin() + 3, 2, 'a');
cout << st9 << endl;//123aa456789
/*
**测试iterator insert (const_iterator p, charT c);
*/
string ss1("123456789");
ss1.insert(ss1.begin()+3, 'a');//由原型知,这里不能将ss1.begin()+3改为3
cout << ss1 << endl;//123a456789
/*
**测试template <class InputIterator>
** iterator insert (iterator p, InputIterator first, InputIterator last);
*/
string ss2("123456789");
string str4("abcdefg");
ss2.insert(ss2.begin() + 3, str4.begin(), str4.begin()+3);//超出范围会出现运行时错误
cout << ss2 << endl;//123abc456789
return 0;
}
6.append()
原型:
//string (1)
basic_string& append (const basic_string& str);
//substring (2)
basic_string& append (const basic_string& str, size_type subpos, size_type sublen);
//c-string (3)
basic_string& append (const charT* s);
//buffer (4)
basic_string& append (const charT* s, size_type n);
//fill (5)
basic_string& append (size_type n, charT c);
//range (6)
template <class InputIterator>
basic_string& append (InputIterator first, InputIterator last);
//initializer list(7)
basic_string& append (initializer_list<charT> il);
(7)不详述。
示例:
#include<iostream>
#include<string>
using namespace std;