Está en la página 1de 9

BIBLIOTECASC++

Bibliotecadetratamientodecaracteresctype.h
En esta biblioteca contiene funciones y macros de tratamiento y clasificacin de caracteres.

Funcin toupper()
Convierte un carcter a mayscula. Sintaxis:
int toupper(int ch);

toupper es una funcin que convierte el entero ch (dentro del rango EOF a 255) a su valor en mayscula (A a Z; si era una minscula de, a a z). Todos los dems valores permanecern sin cambios. Valor de retorno: toupper devuelve el valor convertido si ch era una minscula, en caso contrario devuelve ch.

Funcin tolower()
Convierte un carcter a minscula. Sintaxis:
int tolower(int ch);

tolower es una funcin que convierte el entero ch (dentro del rango EOF a 255) a su valor en minscula (A a Z; si era una mayscula de, a a z). Todos los dems valores permanecern sin cambios. Valor de retorno: tolower devuelve el valor convertido si ch era una mayscula, en caso contrario devuelve ch.

Macros is<conjunto>()
Las siguientes macros son del mismo tipo, sirven para verificar si un carcter concreto pertenece a un conjunto definido. Estos conjuntos son: alfanumrico, alfabtico, ascii, control, dgito, grfico, minsculas, imprimible, puntuacin, espacio, maysculas y dgitos hexadecimales. Todas las macros responden a la misma sintaxis:
int is<conjunto>(int c);

Funcin isalnum isalpha isascii iscntrl isdigit isgraph islower isprint ispunct

Valores

(A - Z o a - z) o (0 - 9) (A - Z o a - z) 0 - 127 (0x00-0x7F) (0x7F o 0x00-0x1F) (0 - 9) Imprimibles menos ' ' (a - z) Imprimibles incluido ' ' Signos de puntuacin espacio, tab, retorno de lnea, cambio de lnea, tab vertical, salto de pgina (0x09 a 0x0D, isspace 0x20). isupper (A-Z) isxdigit (0 to 9, A to F, a to f) Valores de retorno: Cada una de las macros devolver un valor distinto de cero si el argumento c pertenece al conjunto.

Bibliotecademanipulacindecadenasstring.h
En esta biblioteca se incluyen rutinas de manipulacin de cadenas de caracteres y de memoria. De momento veremos slo algunas de las que se refieren a cadenas.

Funcin strlen()
Calcula la longitud de una cadena. Sintaxis:
strlen(const char *s);

strlen calcula la longitud de la cadena s. Valor de retorno: strlen devuelve el nmero de caracteres que hay en s, excluyendo el carcter nulo de terminacin de cadena.
2

Ejemplo:
#include <cstdlib> #include <iostream> #include <cstring> using namespace std; int main(){ char *cadena = "Una cadena C++ termina con cero"; cout << "La cadena: [" << cadena << "] tiene " << strlen(cadena) << " caracteres" << endl; system("PAUSE>NULL"); return 0; }

Funcin strcpy()
Copia una cadena en otra. Sintaxis:
char *strcpy(char *dest, const char *orig);

Copia la cadena orig a dest, la copia de caracteres se detendr cuando sea copiado el carcter nulo. Valor de retorno: strcpy devuelve el puntero dest. Ejemplo:
#include <cstdlib> #include <iostream> #include <cstring> using namespace std; int main(){ char *cadena = "Cadena ejemplo"; char cad[32]; cout << strcpy(cad, cadena) << endl; cout << cad << endl; system("PAUSE>NULL"); return 0; }

Funcin strcmp()
Compara dos cadenas.
3

Sintaxis:
int strcmp(char *cad1, const char *cad2);

Compara las dos cadenas, si la cad1 es mayor que cad2 el resultado ser mayor de 0, si cad1 es menor que cad2, el resultado ser menor de 0, si son iguales, el resultado ser 0. La comparacin se realiza carcter a carcter. Mientras los caracteres comparados sean iguales, se contina con el siguiente carcter. Cuando se encuentran caracteres distintos, aqul que tenga un cdigo ASCII menor pertenecer a la cadena menor. Por supuesto, si las cadenas son iguales hasta que una de ellas se acaba, la ms corta es la menor. Ejemplo:
#include <cstdlib> #include <iostream> #include <cstring> using namespace std; int main(){ char *cadena1 char *cadena2 char *cadena3 char *cadena4

= = = =

"Cadena ejemplo 1"; "Cadena ejemplo 2"; "Cadena"; "Cadena";

if(strcmp(cadena1, cadena2) < 0) cout << cadena1 << " es menor que " << cadena2 << endl; else if(strcmp(cadena1, cadena2) > 0) cout << cadena1 << " es menor que " << cadena2 << endl; else cout << cadena1 << " es igual que " << cadena2 << endl; cout << strcmp(cadena3, cadena2) << endl; cout << strcmp(cadena3, cadena4) << endl; system("PAUSE>NULL"); return 0; }

Funcin strcat()
Aade o concatena una cadena a otra. Sintaxis:
char *strcat(char *dest, const char *orig);

strcat aade una copia de orig al final de dest. La longitud de la cadena resultante ser strlen(dest) + strlen(orig). Valor de retorno:
4

strcat devuelve un puntero a la cadena concatenada. Ejemplo:


#include <cstdlib> #include <iostream> #include <cstring> using namespace std; int main(){ char *cadena1 = "Cadena de"; char *cadena2 = " ejemplo"; char cadena3[126]; strcpy(cadena3, cadena1); cout << strcat(cadena3, cadena2) << endl; system("PAUSE>NULL"); return 0; }

Funcin strncpy()
Copia un determinado nmero de caracteres de una cadena en otra. Sintaxis:
char *strncpy(char *dest, const char *orig, maxlong);

Copia maxlong caracteres de la cadena orig a dest, si hay ms caracteres se ignoran, si hay menos se rellenar con caracteres nulos. La cadena dest no se terminar con nulo si la longitud de orig es maxlong o ms. Valor de retorno: strncpy devuelve el puntero dest. Ejemplo:
#include <cstdlib> #include <iostream> #include <cstring> using namespace std; int main(){ char *cadena = "Cadena ejemplo"; char cad[32]; strncpy(cad, cadena, 4); cad[4] = '\0'; cout << cad << endl;

system("PAUSE>NULL"); return 0; }

Funcin strncmp()
Compara dos porciones de cadenas. Sintaxis:
int strncmp(char *cad1, const char *cad2, maxlong);

Compara las dos cadenas igual que strcmp, pero slo se comparan los primeros maxlong caracteres. Ejemplo:
#include <cstdlib> #include <iostream> #include <cstring> using namespace std; int main(){ char *cadena1 char *cadena2 char *cadena3 char *cadena4

= = = =

"Cadena ejemplo 1"; "Cadena ejemplo 2"; "Cadena"; "Cadena";

if(strncmp(cadena1, cadena2, 6) < 0) cout << cadena1 << " es menor que " << cadena2 << endl; else if(strncmp(cadena1, cadena2, 6) > 0) cout << cadena1 << " es menor que " << cadena2 << endl; else cout << cadena1 << " es igual que " << cadena2 << endl; cout << strncmp(cadena3, cadena2, 5) << endl; cout << strncmp(cadena3, cadena4, 4) << endl; system("PAUSE>NULL"); return 0; }

Funcin strncat()
Aade o concatena una porcin de una cadena a otra. Sintaxis:
char *strncat(char *dest, const char *orig, maxlong);

strncat aade como mximo maxlong caracteres de la cadena orig al final de dest, y despus aade el carcter nulo. La longitud de la cadena resultante ser strlen(dest) + maxlong.

Valor de retorno: strncat devuelve un puntero a la cadena concatenada. Ejemplo:


#include <cstdlib> #include <iostream> #include <cstring> using namespace std; int main(){ char *cadena1 = "Cadena de"; char *cadena2 = " ejemplo"; char cadena3[126]; strcpy(cadena3, cadena1); cout << strncat(cadena3, cadena2, 5) << endl; system("PAUSE>NULL"); return 0; }

Funcin strtok()
Busca dentro de una cadena conjuntos de caracteres o smbolos (tokens) separados por delimitadores. Sintaxis:
char *strtok(char *s1, const char *s2);

strtok considera la cadena s1 como una lista de smbolos separados por delimitadores de la forma de s2. La primera llamada a strtok devuelve un puntero al primer carcter del primer smbolo de s1 e inserta un carcter nulo a continuacin del smbolo retornado. Las siguientes llamadas, especificando null como primer argumento, siguen dando smbolos hasta que no quede ninguno. El separador, s2, puede ser diferente para cada llamada. Valor de retorno: strtok devuelve un puntero al smbolo extrado, o NULL cuando no quedan smbolos. Ejemplo:
#include <cstdlib> #include <iostream> #include <iostream>

using namespace std; int main(){ char entrada[32] = "abc,d,efde,ew,231"; char *p; // La primera llamada con entrada p = strtok(entrada, ","); if(p) cout << p << endl; // Las siguientes llamadas con NULL while(p) \{ p = strtok(NULL, ","); if(p) cout << p << endl; } system("PAUSE>NULL"); return 0; }

Notas:
Nota importante: C y C++ distinguen entre maysculas y minsculas, as que int numero; es distinto de int NUMERO;, y tambin de INT numero; o de int NuMeRo;. Nota I: Si se lee una cadena desde el teclado con 'cin >>' en la que el usuario introduce espacios, la cadena slo contiene los primeros caracteres hasta el primer espacio. Por ejemplo,
char szCadena[40]; cin >> szCadena;

Si el usuario escribe: "hola a todos", la cadena 'szCadena' contendr: "hola". Esto es porque 'cin >>' se comporta de esta manera. En cuanto lea un espacio blanco: ' ' (espacio), '\t' (tabulador), '\r' (retorno), '\n' (nueva lnea), '\v' (tabulador vertical), y '\f' (salto de pgina). Si quieres leer y guardar espacios blancos, usa la funcin miembro 'getline()'. Esto es,
cin.getline( szCadena, 40 );

Leer hasta 39 caracteres, el carcter de "fin-de-fichero" (EOF), o hasta el carcter '\n' (por defecto), el cual no ser guardado en la cadena.
8

Nota II: En C++, solemos hablar de "funciones miembro", pero en otros lenguajes y ya casi en general se habla de "mtodos". Para una cadena de caracteres como un array, no existe ninguna funcin miembro que no acepte la cantidad mxima de caracteres. De hecho, ni aconsejara usar una, si existiese. En el caso de ANSI C, s existe 'gets()', pero su uso no es recomendado, incluso por los propios diseadores de ANSI C. S existe una forma de guardar todos los posibles caracteres, hasta el carcter de fin-de-lnea, en una cadena. Usando la funcin global 'getline()', podemos pasar una cadena de la clase 'string'; ambas entidades estn definidas en <string>. Por ejemplo,
string sCadena; getline( cin, sCadena );

La clase 'string' representa una cadena dinmica de caracteres. Esto significa que la cadena aumenta de tamao automticamente cuando es necesario. Tericamente, no tiene lmite de la cantidad de caracteres que puede almacenar.

También podría gustarte