Você está na página 1de 2

www.tiexpert.

net

Pg. 1 de 2

Trabalhando com caracteres, a biblioteca CTYPE


Um dos fatores importantes de uma boa programao saber lidar com os caracteres, principalmente, tratando-se da linguagem C que case sensitive (diferencia maisculas de minsculas). Nesta pgina, veremos uma biblioteca que lida exatamente com caracteres individuais, a biblioteca ctype.h, prpria da linguagem C, que tem seu correspondente em C++ como cctype. Dentre as funes encontradas nesta biblioteca h aquelas que modificam o estado da letra (maisculas e minsculas) e at mesmo funes que servem para descobrir se o que foi digitado um ponto, vrgula, nmero, espao, ctrl, etc. Primeiramente, vamos as mais comuns que so para converte um caracter em letra maiscula ou minscula. toupper - esta funo recebe um argumento que deve ser um caracter e retorna o caracter correspondente em formato maisculo, se o caracter j for maisculo, a funo no o modifica. tolower - esta funo recebe um argumento que deve ser um caracter e retorna o caracter correspondente em formato minsculo, se o caracter j for minsculo, a funo no o modifica. Como estas funes retornam resultados, estes resultados devem ser guardados dentro de variveis. A melhor parte que podemos fazer isso com a prpria varivel. Simplificando, podemos fazer a varivel X receber ela mesma em maisculo ou minsculo dependendo da funo utilizada. Vejamos o exemplo: #include <iostream> #include <cstdlib> #include <cctype> //corresponde a ctype.h da linguagem C using namespace std; int main (void){ char letra; cout <<"Digite um caracter: "; cin >> letra; cin.ignore(); letra=toupper (letra); cout <<"A representacao maiuscula do que voce digitou e -> "<<letra; letra=tolower (letra); cout <<"\nA representacao minuscula do que voce digitou e -> "<<letra<<"\n\n"; system ("pause"); return EXIT_SUCCESS; } Pronto! Como podemos ver aqui, a letra convertida em maiscula e depois em minscula. Dessa forma podemos controlar exatamente o que esperar no programa. Alm dessas funes, h tambm funes que retornam apenas valores booleanos, ou seja, verdadeiro ou falso (true e false) para determinado tipo de caracter. Com isso possvel fazer nosso programa reagir de maneiras diferentes para tipos de caracteres diferentes. isalnum - verifica se o caracter ou inteiro passado como parmetro alfanumrico. Isso inclui todos os nmeros e as letras do alfabeto, tanto maisculas quanto minsculas. isalpha - verifica se o caracter ou inteiro passado como parmetro alfabtico. Isso inclui todas as letras do alfabeto, tanto maisculas quanto minsculas. isdigit - verifica se o caracter ou inteiro passado como parmetro um digito. Isso inclui todos os nmeros. ispunct - verifica se o caracter ou inteiro passado como parmetro uma pontuao. Isso http://www.tiexpert.net/programacao/c/ctype.php

www.tiexpert.net

Pg. 2 de 2

inclui qualquer tipo de pontuao como . , ? ! ^ ' { } ~ : ;. Porm, no capaz de verificar se uma letra acentuada. isspace - verifica se o caracter ou inteiro passado como parmetro um espao em branco. islower - verifica se o caracter ou inteiro passado como parmetro uma letra minscula isupper - verifica se o caracter ou inteiro passado como parmetro uma letra maiscula iscntrl - verifica se o caracter ou inteiro passado como parmetro um caracter de comando. Isso inclui CTRL, ALT, ENTER, BACKSPACE, etc. isxdigit - verifica se o caracter ou inteiro passado como parmetro compatvel com um nmero hexadecimal. Isso inclui todos os nmero (0 - 9) e qualquer letra entre A e F (no importa se minsculo ou maisculo). Agora, veja abaixo todas estas funes em uma sequncia de if. Este programa determina o que digitado pelo usurio. #include <iostream> #include <cstdlib> #include <cctype> using namespace std; int main (void){ int letra; cout <<"Digite uma letra: "; letra = getchar (); cout <<"\n\nA letra que voce digitou e:\n"; if (isalnum (letra)) cout <<"\nalfanumerico"; if (isalpha (letra)) cout <<"\nletra"; if (isdigit (letra)) cout <<"\nnumero"; if (ispunct (letra)) cout <<"\npontuacao"; if (isspace (letra)) cout <<"\num espaco em branco"; if (islower(letra)) cout <<"\nminusculo"; if (isupper(letra)) cout <<"\nmaiusculo"; if (iscntrl(letra)) cout <<"\nbotao de controle"; if (isxdigit(letra)) cout <<"\ncapaz para escrita em hexadecimal"; cout <<"\n\n"; system ("pause"); return EXIT_SUCCESS; } Este programa mostra bem o que cada uma das funes faz. Como todas so funes booleanas, ento, colocamos todas elas dentro dos if. Se for verdadeiro executa a linha logo abaixo. Pronto, este o comeo para mais adiante lidarmos com cadeias de caracteres que so as strings.
Autor: Denys William Xavier Este artigo est sob Licena Creative Commons Para ver uma cpia desta licena, visite http://creativecommons.org/licenses/by-nc-sa/2.5/br/ ou envie uma carta para Creative Commons, 171 Second Street, Suite 300, San Francisco, California 94105, USA.

http://www.tiexpert.net/programacao/c/ctype.php

Você também pode gostar