码迷,mamicode.com
首页 > 其他好文 > 详细

标准库类型String

时间:2017-02-08 14:39:30      阅读:204      评论:0      收藏:0      [点我收藏+]

标签:style   har   表达式   使用   cout   isp   etc   语句   对象   

 

string对象中每个字符的处理:

要用到 for(声明:表达式) 语句

比如简单的打印string str中每一个字符

---

string str("hello world!!!");

for(auto c: str)cout<<c<<endl;  

(ps:这里auto 的意思是让编译器自己来决定c变量的类型)

---

再举一个例子统计string str的标点符号数目

string str("hello world!!!");

decltype(str.szie()) num_cnt = 0;

for(auto c : s)

  if(ispunct(c)) ++num_cnt;

cout<<num_cnt<<" punctuation characters in "<<s<<endl;

(ps:这里decltype(str.size()) 是代表的str.size()声明类型,而str.size()的类型不是整型,而是一个无符号的其他类型。

然后使用 ispunct(char c)是包含在头文件cctype里面的。cctype 头文件里面有许多 isalnum判断是否数字,isalpha判断是否字母..etc)

----

 那假如希望改变string str的字符呢?而不是仅仅进行统计和输出

这个例子是将str的全部变成大写字母!

string str("hello world!!!");

for(auto &c : str) c=toupper(c)

cout<<str<<endl;

(ps: 这里有个小变化for(auto c:str) 变成 for(auto &c:str)! 原来str 的每个字符 是复制给 auto c。所以即使你改变了auto c

也并没有改变str的每个字符!但是auto &c 没有,这里c是代表str 每个字符的引用而非副本。也就是c 是每个字符的另一个别名而已!

所以改变c 确实能够改变str 的字符!)

 

标准库类型String

标签:style   har   表达式   使用   cout   isp   etc   语句   对象   

原文地址:http://www.cnblogs.com/zzzPark/p/6377708.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!