7.14. Character classification¶
It is often useful to examine a character and test whether it is upper
or lower case, or whether it is a character or a digit. C++ provides a
library of functions that perform this kind of character classification.
In order to use these functions, you have to include the header file
cctype
.
char letter = 'a';
if (isalpha(letter)) {
cout << "The character " << letter << " is a letter." << endl;
}
You might expect the return value from isalpha
to be a bool
, but
for reasons I don’t even want to think about, it is actually an integer
that is 0 if the argument is not a letter, and some non-zero value if it
is.
This oddity is not as inconvenient as it seems, because it is legal to
use this kind of integer in a conditional, as shown in the example. The
value 0 is treated as false
, and all non-zero values are treated as
true
.
Technically, this sort of thing should not be allowed—integers are not the same thing as boolean values. Nevertheless, the C++ habit of converting automatically between types can be useful.
Other character classification functions include isdigit
, which
identifies the digits 0 through 9, and isspace
, which identifies all
kinds of “white” space, including spaces, tabs, newlines, and a few
others. There are also isupper
and islower
, which distinguish
upper and lower case letters.
Finally, there are two functions that convert letters from one case to
the other, called toupper
and tolower
. Both take a single
character as a parameter and return a (possibly converted) character.
char letter = 'a';
letter = toupper (letter);
cout << letter << endl;
The output of this code is A
.
As an exercise, use the character classification and conversion library
to write functions named stringToUpper
and stringToLower
that
take a single string
as a parameter, and return a string with all the
characters converted to upper or lower case. The return type
should be string
.
Try writing the stringToUpper
and stringToLower
functions in the
commented sections of the active code below. Both functions take a single string
as a parameter and have return type void
. stringToUpper
should convert the string
to uppercase, and stringToLower
should convert the string to lowercase. Some functions that
you might find useful include isalpha
, isupper
, islower
, toupper
, and tolower
.
If you get stuck, you can reveal the extra problems at the end for help.
Let’s write the code for the stringToUpper
function. stringToUpper
should convert a string to uppercase.
Let’s write the code for the stringToLower
function. stringToLower
should convert a string to lowercase.