C++ string学习——处理字符

一、cctype头文件中的函数

isalnum ( c )        //当c是字母或数字时为真
isalpha ( c )        //当c是字母时为真
iscntrl ( c )        //当c是控制字符时为真
isdigit ( c )        //当c是数字时为真
isgraph ( c )        //当c不是空格但可打印时为真
islower  ( c )       //当c是小写字母时为真
isprint ( c )        //当c可打印字符时为(即是空格或c具有可视形式)
ispunct ( c )        //当c是标点符号时为真
                     (即c不是控制字符、数字、字母、可打印空白中的一种)
isspace ( c )        //当c是空白时为真(即c是空格、横向制表符、
                     纵向制表符、回车符、换行符、进纸符中的种)
isupper ( c )        //当c是大写字母时为真
isxdigit ( c )       //当c是十六进制数字时为真
tolower ( c )        //如果c是大写字母,输出对应的小写字母:否则原样输出c
toupper ( c )        //如果c是小写字母,输出对应的大写字母:否则原样输出c

建议:使用C++版本的c标准库头文件ctype.h

二、基于范围的for语句

处理每一个字符
C++11提供了一种语句:范围for(range for)语句。

for(declaration  :  expression){
       statement
       }

其中,expression部分是一个对象,用于表示一个序列。declaration 部分负责定义一个变量,该变量将别用于访问序列中的基本元素。每次迭代,declaration 部分的变量会被初始化为 expression 部分的下一个元素值。

string      str("some    string");
for(auto c : str)
         cout << c <<endl;

在此例中,通过使用auto关键字,让编译器来决定变量c的类型,这里c的类型是char。每次迭代,str的下一代字符被拷贝给c,然后在输出;

改变字符串中的字符
如果想改变string对象中字符的值,就需要把循环变量定义为引用类型。

string   s("hello  world");
for(auto  &c : s)
	c = toupper(c);           //c是引用,所以会改变s中的字符
		cout << s << endl;

只处理一部分字符
访问string对象单个元素的方式有两种,一种是迭代器,一种是下标;
迭代器会《C++ 迭代器》中详细介绍;
下标:下表运算符[ ],接受的参数为string::size_type 类型的值,参数是访问字符的位置,返回值是访问字符的引用,下标从0算起到s.size()结束(不包括s.size())。

string    s =("some  string");
for  ( decltype ( s.size( ) ) index = 0;index !=s.size() &&  !isspace( s [index] );++index)
	                          s[index] = toupper(s[index]);
输出结果为SOME  string
这里我们使用decltype关键字声明index为s.size()函数返回值得类型也可以使用string::size_type来定义	                    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值