a firstworks project
Rudiments
About Documentation Download Licensing News

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");
	}
}
Copyright 2017 - David Muse - Contact