Using the wcharacter class
Introduction
The wcharacter class provides static methods for evaluating and manipulating wide characters.
Analyzing Characters
Methods are provided for determining if a wide character is alphabetic, alphanumeric, lower case, upper case, etc.
#include <rudiments/wcharacter.h>
#include <rudiments/stdio.h>
int main(int argc, const char **argv) {
// print information about all ascii characters
for (int32_t uc=0; uc<128; uc++) {
wchar_t c=(wchar_t)uc;
stdoutput.printf("character %lc:\n",c);
stdoutput.printf(" is alphanumeric : %s\n",
(wcharacter::isAlphanumeric(c))?"yes":"no");
stdoutput.printf(" is alphabetical : %s\n",
(wcharacter::isAlphabetical(c))?"yes":"no");
stdoutput.printf(" is lower case : %s\n",
(wcharacter::isLowerCase(c))?"yes":"no");
stdoutput.printf(" is upper case : %s\n",
(wcharacter::isUpperCase(c))?"yes":"no");
stdoutput.printf(" is punctuation : %s\n",
(wcharacter::isPunctuation(c))?"yes":"no");
stdoutput.printf(" is printable : %s\n",
(wcharacter::isPrintable(c))?"yes":"no");
stdoutput.printf(" is printable (non-space): %s\n",
(wcharacter::isPrintableNonSpace(c))?"yes":"no");
stdoutput.printf(" is control character : %s\n",
(wcharacter::isControlCharacter(c))?"yes":"no");
stdoutput.printf(" is digit : %s\n",
(wcharacter::isDigit(c))?"yes":"no");
stdoutput.printf(" is hex digit : %s\n",
(wcharacter::isHexDigit(c))?"yes":"no");
stdoutput.printf(" is blank : %s\n",
(wcharacter::isBlank(c))?"yes":"no");
stdoutput.printf(" is whitespace : %s\n",
(wcharacter::isWhitespace(c))?"yes":"no");
stdoutput.printf(" is ascii : %s\n",
(wcharacter::isAscii(c))?"yes":"no");
}
}
Transforming Characters
Methods are also provided for transforming the wide character to upper or lower case, and to 7-bit ascii, by clearing the higher order bits.
#include <rudiments/wcharacter.h>
#include <rudiments/stdio.h>
int main(int argc, const char **argv) {
// perform case conversions on all ascii characters
for (int32_t uc=0; uc<128; uc++) {
wchar_t c=(wchar_t)uc;
stdoutput.printf("character %lc:\n",c);
stdoutput.printf(" to upper case : %lc\n",
(wchar_t)wcharacter::upper(c));
stdoutput.printf(" to lower case : %lc\n",
(wchar_t)wcharacter::lower(c));
// place a 1 in bit 8
c=c|0x80;
stdoutput.printf(" to ascii : %lc\n",
(wchar_t)wcharacter::convertToAscii(c));
}
}
Member of a Set
An isInSet() method is also provided which returns true if the specified wide character is a member of the specified set of wide characters and false otherwise.
#include <rudiments/wcharacter.h>
#include <rudiments/stdio.h>
int main(int argc, const char **argv) {
// define the set
const wchar_t set[]=L"abcdefg";
// loop through the alphabet...
for (wchar_t c=L'a'; c<=L'z'; c++) {
stdoutput.printf("is %lc in the set \"%ls\"? %s\n",
c,set,(wcharacter::isInSet(c,set))?"yes":"no");
}
}