标准库类型String
Posted ZhuangPark
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了标准库类型String相关的知识,希望对你有一定的参考价值。
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的主要内容,如果未能解决你的问题,请参考以下文章