En C++, nous avons plein de librairies qui peuvent nous faciliter la vie. Encore faut-il les connaitre.
Commençons par les standards avec CTYPE Pour l’utiliser, on appelle le header ctype.h de la même façon que nous utilisons la librairie de la META en incluant son entête (header) en début de programme.
#include <Gamebuino-Meta.h>
#include <ctype.h>
Cette librairie propose un ensemble de fonctions de traitement de caractères permettant de savoir si un caractère est d’une certaine nature (minuscule, majuscule, ponctuation, espace, chiffre, etc…), et des fonctions permettant de changer la casse de ces caractères (de le passer en minuscules ou en majuscules).
Prenons un exemple simple avec un programme qui va tester des variables pour nous dire si cette variable est de type alphanumérique ou non.
Nous allons initialiser ces 4 fonctions et nous afficherons tout simplement le résultat du test:
#include <Gamebuino-Meta.h>
#include <ctype.h>
int var1 = 'd';
int var2 = '2';
int var3 = '\t';
int var4 = ' ';
void setup() {
// put your setup code here, to run once:
gb.begin();
SerialUSB.begin(9600);
}
void loop() {
while (!gb.update());
gb.display.clear();
if( isalnum(var1) ) {
gb.display.printf("var1 est alphanum.\n");
} else {
gb.display.printf("var1 n'est pas alphanum.\n");
}
if( isalnum(var2) ) {
gb.display.printf("var2 est alphanum.\n");
} else {
gb.display.printf("var2 n'est pas alphanum.\n");
}
if( isalnum(var3) ) {
gb.display.printf("var3 est alphanum.\n");
} else {
gb.display.printf("var3 n'est pas alphanum.\n");
}
if( isalnum(var4) ) {
gb.display.printf("var4 est alphanum.\n");
} else {
gb.display.printf("var4 n'est pas alphanum.\n");
}
}
Bon, c’est vraiment un programme simple pour illustrer une des fonctions de cette librairie.
Ces fonctions sont très facile à identifier : elles sont toutes préfixées de is
et renvoient une valeur entière de type int
, que l’on peut interpréter en temps que booléen (true
pour 1 / false
pour 0 ).
Voici la liste complète des fonctions de cette catégorie.
Nom | Type | Description |
---|---|---|
isalnum | fonction | Vérifie si un caractère est alphanumérique. |
isalpha | fonction | Vérifie si un caractère est alphabétique. |
isblank | fonction | Vérifie si un caractère est blanc ou non. |
iscntrl | fonction | Vérifie si l’on a à faire à un caractère de contrôle. |
isdigit | fonction | Vérifie si un caractère est un chiffre. |
isgraph | fonction | Vérifie si un caractère possède une représentation graphique. |
islower | fonction | Vérifie si un caractère est une lettre minuscule. |
isprint | fonction | Vérifie si un caractère est affichable ou non. |
ispunct | fonction | Vérifie s’il s’agit d’un caractère de ponctuation. |
isspace | fonction | Vérifie s’il s’agit d’un caractère d’espacement. |
isupper | fonction | Vérifie s’il s’agit d’une lettre majuscule. |
isxdigit | fonction | Vérifie s’il s’agit d’un chiffre hexadécimal. |
Les 2 fonctions de transformations en majuscules ou en minuscules sont:
Nom | Type | Description |
---|---|---|
tolower | fonction | Transforme une lettre majuscule en une minuscule. |
toupper | fonction | Transforme une lettre minuscule en une majuscule. |
Voici un petit exemple d’utilisation de ces fonctions:
#include <Gamebuino-Meta.h>
#include <ctype.h>
// lower are all lowercase letters from a to z
// upper are all capital letters from A to Z
// alpha are lower and upper letters
// digit are decimal digits from 0 to 9
// space are spaces and tabs
char str[] = "TUtoRIal 123.";
int var2 = '2';
void setup() {
// put your setup code here, to run once:
gb.begin();
SerialUSB.begin(9600);
}
void loop() {
while (!gb.update());
gb.display.clear();
for (int i = 0; str[i]; i++) {
if ( islower(str[i]) ) {
gb.display.print("minuscule,");
str[i] = toupper(str[i]);
} else if ( isspace(str[i]) ) {
gb.display.print("espace,");
} else if ( isdigit(str[i]) ) {
gb.display.print("chiffre,");
} else if ( isupper(str[i]) ) {
gb.display.print("majuscule,");
} else {
gb.display.print("autre,");
}
}
gb.display.println("");
gb.display.println("");
gb.display.println("En majuscules:");
gb.display.printf("%s\n", str);
}
Voilà, rien n’a dire de plus sur cette librairie. Dans nos programmes sur la META, ce n’est pas celle que l’on utilisera le plus mais ça peut être pratique de la connaitre pour certains cas et pour apprendre à programmer car sur PC, elle peut servir beaucoup plus notamment pour vérifier de la validité de saisie ou pour transformer un fichier reçu dans un format spécifique en sortie par exemple pour un traitement automatique, etc…
A bientôt pour découvrir les fonctions d’une nouvelle librairie.