STL精彩玩法.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
STL精彩玩法

STL精彩玩法(1)toupper,tolower地球人都知道 C++ 的 string 没有 toupper ,好在这不是个大问题,因为我们有 STL 算法:string s(heLLo);transform(s.begin(), s.end(), s.begin(), ::toupper);cout s endl;transform(s.begin(), s.end(), s.begin(), ::tolower);cout s endl;当然,我知道很多人希望的是 s.to_upper() ,但是对于一个这么通用的 basic_string 来说,的确没办法把这些专有的方法放进来。如果你用 boost stringalgo ,那当然不在话下,你也就不需要读这篇文章了。------------------------------------------------------------------------trim我们还知道 string 没有 trim ,不过自力更生也不困难,比 toupper 来的还要简单: string s(?? hello?? ); s.erase(0, s.find_first_not_of( \n)); cout s endl; s.erase(s.find_last_not_of( ) + 1); cout s endl;注意由于 find_first_not_of 和 find_last_not_of 都可以接受字符串,这个时候它们寻找该字符串中所有字符的 absence ,所以你可以一次 trim 掉多种字符。-----------------------------------------------------------------------erasestring 本身的 erase 还是不错的,但是只能 erase 连续字符,如果要拿掉一个字符串里面所有的某个字符呢?用 STL 的 erase + remove_if 就可以了,注意光 remove_if 是不行的。 string s(?? hello, world. say bye?? ); s.erase(remove_if(s.begin(),s.end(), bind2nd(equal_tochar(), )), s.end());上面的这段会拿掉所有的空格,于是得到 hello,world.saybye。-----------------------------------------------------------------------replacestring 本身提供了 replace ,不过并不是面向字符串的,譬如我们最常用的把一个 substr 换成另一个 substr 的操作,就要做一点小组合: string s(hello, world); string sub(ello, ); s.replace(s.find(sub), sub.size(), appy ); cout s endl;输出为 happy world。注意原来的那个 substr 和替换的 substr 并不一定要一样长。-----------------------------------------------------------------------startwith, endwith这两个可真常用,不过如果你仔细看看 string 的接口,就会发现其实没必要专门提供这两个方法,已经有的接口可以干得很好: string s(hello, world); string head(hello); string tail(ld); bool startwith = pare(0, head.size(), head) == 0; cout boolalpha startwith endl; bool endwith = pare(s.size() - tail.size(), tail.size(), tail) == 0; cout boolalpha endwith endl;当然了,没有 s.startwith(hello) 这样方便。------------------------------------------------------------------------toint, todouble, tobool...这也是老生常谈了,无论是 C 的方法还是 C++ 的方法都可以,各有特色: string s(123); int i = atoi(s.c_str()); cout i endl; int ii;? stringstream(s) ii; cou

文档评论(0)

yan698698 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档