Cadenas de Caracteres en C++

Post on 08-Apr-2015

1.234 views 3 download

description

Explicacion basico de cadenas de caracteres en C++Compilado en BorlandC++

Transcript of Cadenas de Caracteres en C++

Concepto :

Una cadena de Caracteres en el lenguaje del C++es un vector de tipo unsigned char o simplementechar donde no es mas que un vector de enterosdonde cada carácter es asociado a un entero de 0a 255 en el código ASCII.

char “nombredelacadena” [Limite];

Ejemplos:

char cadena[50];

unsigned char cadena[50];

Las cadenas de caracteres terminan en un valor

nulo “\0”.

char cadena[6]={„a‟ , ‟b‟ , ‟c‟ , ‟d‟, ‟e‟,‟\0‟};

Puesto que cada carácter esta asociado a un

entero en el código ASCII la cadena anterior es

equivalente a :

char cadena[6]={97 , 98 ,99 ,100,101,0};

Leer y Escribir una Cadena de

Caracteres

Librería <stdio.h>

#include<stdio.h>

void main ()

{

char cadena[50];

printf("Ingrese Cadena de Caracteres :");

scanf("%s",cadena);

printf("\nCadena Ingresada : %s \n",cadena);

}

Pero ahora ingrese una cadena de caracteres donde

incluya espacios en blanco el ejemplo anterior solo nos

mostrara la primera palabra o hasta encontrar el primer

espacio en blanco.

Para solucionar este problema la Librería <stdio.h> nos tiene

una solución la cual se trata de la modificación en el formato

de personalización del scanf.

Scanf(“%[^\n]”,cadena);

Esta modificación permite recorrer el vector de caracteres

hasta que encuentra “\n” que se da cuando uno presiona

enter.

Función getchar

Principalmente la función getchar almacena

cada carácter leído de un texto en la

siguiente posición libre de una matriz de

caracteres por medio de un bucle ,donde

debemos finalizar la cadena con el carácter

“\0”.

#include<stdio.h>

#define long_cad 41

void main ()

{

unsigned char cadena[long_cad];

int i=0,car;

printf("Introducer un Texto :");

//Bucle

while ((car=getchar())!='\n' && i< long_cad-1)

{cadena[i]=car;

i++; //aumenta posiciones de la cadena}

cadena[i]=0;

printf("Texto Introducido: %s \n",cadena);

printf("Longitud del Texto: %i \n",i);

}

Algoritmo para Convertir una cadena a su

valor en el Código ASCII

#include<stdio.h>

#include<iostream.h>

void main ()

{

char cadena[50];

int i=0;

puts("Ingrese Cadena de Caracteres : ");

gets(cadena);

i=0;

while(cadena[i]!=0)

{printf("Caracter %c ,valor ASCII %d \n",cadena[i],cadena[i]);

i++;}

}

Función puts

Esta función permite mostrar un texto en la pantalla igual

que el “printf” o “cout” pero esta funcion es la mas

recomendada para el uso de cadenas ya que la ultima

posición automáticamente pone el “\0” la cual es la

finalización de la cadena.

puts(“Ingrese cadena:”);

gets(cadena);

Generalmente para los algoritmos de cadenas se

recomienda usar el puts y gets por tu facilidad en el

trabajo con cadena

Función gets

Es otra forma de leer una cadena de caracteres

esta función también lee los espacios en blanco

hasta encontrar la posición “\0” o 0.

#include<stdio.h>

#include<iostream.h>

void main ()

{

char cadena[50];

printf("Ingrese Cadena de Caracteres :");

gets(cadena);

printf("\nCadena Ingresada : %s \n",cadena);

cout<<"Cadena Ingresada :"<<cadena<<endl;

}

Limpiar el Buffer

Cuando ejecutamos un algoritmos es probable que se

queden en memoria algunos caracteres que se escriben

por si solos que por defecto en la siguiente ejecución de

un programa puede afectar a este especialmente en

arreglos o array la solución a esto es limpiar el buffer por

medio de funciones.

fflush(stdin);

#include<stdio.h>

void main ()

{

int entero;

double real;

char respuesta = 's',cadena[50];

printf("Introducir un N° entero y un N° real: ");

scanf("%d %lf", & entero ,& real);

printf("%d +%f = %f\n\n",entero,real,entero+real);

//LIMPIAMOS BUFFER

fflush(stdin);

printf("Introducir cadena de Texto : \n");

while(respuesta == 's' && gets(cadena)!= NULL)

{printf("%s\n",cadena);

do

{printf("¿Desdea Continuar?([s]i/[n]o)");

respuesta = getchar();

//LIMPIAMOS BUFFER

fflush(stdin);}

while((respuesta != 's') && (respuesta !='n'));

}

}

Funciones de la Biblioteca en C++

Funcion Descripción Ejemplo

strlen Obtiene la longitud de la

cadena sin contar \0

Longitud=strlen(cadena);

tolower Convertir un carácter a

minúscula

for(i = 0; cadena[i]; i++)

cadena[i] =

tolower(cadena[i]);

toupper Convertir un carácter a

mayúscula

for(i = 0; cadena[i]; i++)

cadena[i] =

toupper(cadena[i]);

Strcpy Copiar Cadenas

Strcmp Comparar cadenas

atoi Convertir un cadena a un

valor int (Entero)

sptrinf Convertir un valor desde

cualquier formato admitido a

una cadena

Algoritmo de Cadenas llamados con

Procedimientos

#include<iostream.h> //cout y cin

#include<stdio.h> //(printf-puts) - (scanf-gets)

#include<string.h> //funciones para cadenas strlen

#include <ctype.h> //funciones para cadenas tolower y toupper

void ingreso();

void contador();

void mayuscula();

void minuscula();

char cadena[50];

void main ()

{

void ingresar(void);

{puts("Ingrese una Cadena de Caracteres: ");

gets(cadena);}

void contador(void);

{

int longitud=0;

longitud=strlen(cadena);

cout<<"\nFuncion 'strlen' N° de Caracteres de la Cadena \n";

cout<<"La Cadena '"<<cadena<<"' Tiene: "<<longitud<<" Caracteres

"<<endl;

}

void mayuscula(void);

{

int i;

//Conversion de uno en uno

for(i = 0; cadena[i]; i++)

cadena[i] = toupper(cadena[i]);

printf("\nFuncion 'toupper',Conversion de una cadena a Mayuscula\n") ;

printf("Cadena Convertida a Mayuscula : %s",cadena);

}

void minuscula(void);

{

int i;

//Conversion de uno en uno

for(i = 0; cadena[i]; i++)

cadena[i] = tolower(cadena[i]);

cout<<"\n\nFuncion 'tolower',Conversion de una cadena a Minuscula\n"

;

printf("Cadena Convertida a Minuscula : %s",cadena);

}

}

Alumno:

Tasayco Tasayco Jhorman