设为首页 加入收藏

TOP

C++string中有关字符串内容修改和替换的函数浅析(二)
2015-07-16 12:57:02 来源: 作者: 【 】 浏览:33
Tags:string 有关 字符串 内容 修改 替换 函数 浅析
ase(10, 5);//这么做不行
? ? //cout << str4 << endl;
? ? str4.erase(str4.begin());
? ? cout << str4 << endl;//23456789
? ? str5.erase(str5.begin() + 2);
? ? cout << str5<< endl;//12456789
? ? //str6.erase(str6.begin() + 10);//这么做不行
? ? //cout << str6 << endl;
? ? str6.erase(str6.end() - 2);
? ? cout << str6 << endl;//12345679
? ? //str7.erase(str7.end() - 10);//这么做不行
? ? //cout << str7 << endl;
? ? str7.erase(str7.begin()+2,str7.end()-2);
? ? str7.erase(str7.begin() + 2, str7.end() - 2);
? ? cout << str7 << endl;//1289? 删除从str7.begin()+2(包括str7.begin()+2)到str7.end() - 2(包括str7.end() - 2)的所有字符
? ? //str8.erase(str8.begin() + 7, str8.end() - 5);//这么做不行
? ? //cout << str8 << endl;
? ? return 0;
}


?


?4.clear()


原型:


void clear() noexcept;


作用:
删除字符串的所有内容。


示例:


?


#include
#include


using namespace std;


int main()
{
? ? string str("123456789");
? ? str.clear();
? ? cout << str << endl;//空行
? ? cout << str.length() << endl;//0
? ? return 0;
}


?


?5.insert()


原型:


?


//string (1)
basic_string& insert (size_type pos, const basic_string& str);
//substring (2)
basic_string& insert (size_type pos, const basic_string& str,
? ? ? ? ? ? ? ? ? ? ? size_type subpos, size_type sublen);
//c-string (3)
basic_string& insert (size_type pos, const charT* s);
//buffer (4)
basic_string& insert (size_type pos, const charT* s, size_type n);
//fill (5)
basic_string& insert (size_type pos,? size_type n, charT c);
? ? iterator insert (const_iterator p, size_type n, charT c);
//single character (6)
? ? iterator insert (const_iterator p, charT c);
//range (7)
template
? ? iterator insert (iterator p, InputIterator first, InputIterator last);
//initializer list (8)
basic_string& insert (const_iterator p, initializer_list il);


?


说明:
1)原型(8)与list容器有关,是C++11新标准,这里赞不详述。
2)以上原型中出现的返回值和参数有iterator和InputIterator与迭代器有关,这里也暂不详述,可以将其简单地理解为指针,begin()和end()的返回值与它们匹配。


示例:


?


#include
#include


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
? ? **? ? 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& s

首页 上一页 1 2 3 4 下一页 尾页 2/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C++ string到底是什么? 下一篇C++string中有关大小和容量的函数..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: