codecamp

C++ 字符分类

一般来说,检查一个字符并测试它是大写还是小写、是字母还是数字是有用的。C++提供了一组库函数用来执行这种分类操作。要使用这些函数,需要包含头文件ctype.h。

char letter = ’a’;
if (isalpha(letter)) {
  cout << "The character " << letter << " is a letter." << endl;
}

你可能期望isalpha的返回值是bool类型,但由于一些甚至我都不想考虑的原因,它的返回值实际是整型,如果参数不是字母那结果会是0,参数是字母时结果就是非0值。

这个奇怪现象并不像看起来这般不便,因为如例子所示,在条件中使用这种整型数是合法的,其中0被当做假,而非0值被当做真处理。

从技术上讲,这种事情是不允许的——整型数并不同于布尔值。尽管如此,C++允许不同类型间自动转换这个习惯是有用的。

其他字符分类函数包括isdigit(用以识别0~9之间的数字)、isspace(用以识别各种空白字符,如空格符、制表符、换行符)等等。其他如isupper和islower函数用以识别大小写字母。

最后,还有两个进行大小写转换的函数,它们是toupper和 tolower。它们都接收一个字符型的参数并返回转换后的字符。

char letter = ’a’;
letter = toupper (letter);
cout << letter << endl;

这段代码的输出是A。

作为练习,请使用字符分类与转换库编写apstringToUpper和apstringToLower函数,它们都接收一个apstring类型的参数,将参数中的所有字母都转换为大写或者小写,返回类型为void。

C++ apstring是可比较的
C++ 其他apstring函数
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }