Cadena: es un array de caracteres (char) terminado en un carcter nulo (\0)
Array de caracteres A B C
Cadena de Caracteres A B C \0
Las cadenas se declaran como los arrays. Se inician con comillas.
char texto[5] = ABC; //contiene cadenas de 4 caracteres como mximo
1 Lectura y escritura de cadenas desde consola
leer cin >> nombre del array que recibe la cadena cin >> texto; Escribir cout << nombre del array que contiene la cadena cout << texto;
Introduccin: Vamos a ver por fin cmo manejar TEXTO en C++, ya que hasta el momento solo lo hemos mostrado por pantalla mediante la sentencia cout y el operador de insercin <<. C++ no tiene como otros lenguajes de programacin, un tipo de datos bsico para almacenar texto, como puede ser el tipo string. C++ utilizar ARRAYS DE CARACTERES para almacenar texto. void main() {
cout << Esto es una cadena de texto; }3 INTRODUCCIN AL TIPO COMPUESTO CADENA Cadenas de Texto: Definicin Una cadena de texto es una secuencia de caracteres. Ejemplos de cadenas son: Don Quijote de la Mancha Hola Mundo Apolo 13 En C++ una cadena se considera como un array de caracteres terminado con el carcter nulo \0. A p o l o 1 3 \0
Cadenas de caracteres[editar] En C, C++ las cadenas de caracteres no son ms que arrays de caracteres, salvo que a este tipo de arrays el compilador les da un tratamiento especial. Usted puede manipular las cadenas de caracteres de la misma manera en que manipula cualquier otro tipo de array, sin embargo, es preferible hacer uso de una librera estndar especialmente escrita para manipulacion de cadenas de caracteres, me refiero a la librera <string.h> y que viene incluida con todo compilador de C, C++. Para comenzar y antes de ver algunas de las funciones de la mencionada librera, tenemos los siguientes ejemplos: 1. char nombre[] = "Oscar"; 2. char nombre2[] = { 'O', 's', 'c', 'a', 'r', '\0' }; En el ejemplo 1 se est declarando la variable nombre como una cadena de caracteres y cuyo contenido inicial es "Oscar". En el ejemplo 2 se est declarando la variable nombre2 como una cadena de caracteres y cuyo contenido inicial es { 'O', 's', 'c', 'a', 'r', '\0' };. En ambos casos el resultado es el mismo, es decir, al final se obtiene la misma cadena, pero usted debe poner atencin al hecho de que toda cadena de caracteres en C, C++ debe terminar con el carcter NULL, que normalmente es igual a cero y se puede escribir como '\0'. Ahora bien, cuando usted usa la sintaxis mostrada en el ejemplo 1 no tiene que preocuparse por agregar el caracter NULL, ya que esto lo hace el compilador automticamente.
Los arrays son usados extensamente por los programadores para contener listas de datos en la memoria, por ejemplo, los datos almacenados en un disco suelen leerse y ponerse dentro de un array con el objetivo de facilitar la manipulacin de dichos datos, ya que los datos en memoria pueden ser modificados, clasificados, marcados para su eliminacion, etc. para luego ser reescritos al disco. Otro ejemplo podra ser el de un men de opciones que se desplegarn dentro de una ventana para que el usuario pueda elegir una de stas, en tales casos y cuando las opciones son numerosas, solamente se ponen unas cuantas de ellas dentro de la ventana pero se le da al usuario la oportunidad de poder subir y bajar a su antojo para ver el resto de opciones que, aunque no se vean en la ventana, forman parte del men o array de opciones. Array: Un array es un conjunto de datos del mismo tipo ordenados en forman lneal uno despus de otro. Los componentes de un array se han de referenciar por medio del nombre del array y un ndice de desplazamiento para indicar el componente deseado. Cadenas de Texto: Declaracin Las cadenas de texto se declaran como se declaraban los arrays de caracteres, indicando el tamao mximo de la cadena + 1. char <nombre_de_cadena> [ tamao_mximo +1 ]; Sintaxis char cabecera[10]; char nombre[8]; Ejemplos: La variable cabecera puede contener una cadena de texto de tamao mximo 9 o un array de 10 posiciones. Se declaran de la misma manera, por tanto la diferencia radica en el uso que se le de a la variable
Cadenas de Texto: Escritura de cadenas Para escribir el contenido de una variable de tipo cadena en consola, utilizamos la sentencia de escritura cout con el operador de insercin <<. cout escribe todos los caracteres desde la posicin 0 en adelante, hasta que se encuentre el carcter nulo \0 char cad_uno[20] = Hola Mundo; char nombre[4] = Luis;
cout << cad_uno; cout << nombre; cad_uno = H o l a M undo \0 L u i s 6 9 g r t \0 v nombre = En consola aparece: Hola Mundo
La asignacin directa slo est permitida cuando se hace junto con la declaracin. El siguiente ejemplo producir un error en el compilador, ya que una cadena definida de este modo se considera una constante, como veremos en el captulo de "arrays" o arreglos. char Saludo[5]; Saludo = "HOLA" La manera correcta de asignar una cadena es: char Saludo[5]; Saludo[0] = 'H'; Saludo[1] = 'O'; Saludo[2] = 'L'; Saludo[3] = 'A'; Saludo[4] = 0; O bien: char Saludo[5] = "HOLA";
pues un char colo almacena un caracter.
CDIGO: SELECCIONAR TODO char letra='H';
si quieres almacenar una palabra, por ejemplo de 4 caracteres, el "char" donde lo guardars tiene que ser de 5.
CDIGO: SELECCIONAR TODO char palabra[5];
si quieres asignarle el valor a palabra, tienes tres formas
CDIGO: SELECCIONAR TODO palabra = {'h','o','l','a','\0'};
CDIGO: SELECCIONAR TODO palabra[0]='h'; palabra[0]='o'; palabra[0]='l'; palabra[0]='a'; palabra[0]='\0';
la otra manera es con una funcin que est en la librera string.h
CDIGO: SELECCIONAR TODO strcpy(palabra,"hola");
Operacin con cadena de caracteres[editar] Siguiendo en el mbito de la informtica, al considerar las cadenas como un tipo de datos, hay que definir (o conocer) cuales son las operaciones que podemos hacer con ellas, en principio stas podran ser muchas y llegar a ser muy sofisticadas, aqu se exponen algunas de ellas: Asignacin: Consiste en asignarle una cadena a otra Representacin[editar] Una cadena suele ser representada entre comillas dobles superiores ("palabra"), mientras que un carcter de esa cadena (un char en ingls) suele ser representado entre comillas simples ('p'). Por ejemplo, en C: charAt c = 'a'; char str[5] = "hola"; Generalmente para acceder a un carcter en una posicin determinada se suele usar la forma variable[posicin] como cuando se accede a un vector. Para poder mostrar una comilla (") dentro de la cadena y no tener problemas con las comillas que la delimitan, se usan secuencias de escape. Esto se aplica a otros caracteres reservados o no imprimibles como el retorno de carro. No obstante, las expresiones para producir estas secuencias de escape dependen del lenguaje de programacin que se est usando. Una forma comn, en muchos lenguajes, de escapar un carcter es anteponindole un \ (sin comillas), p. e.: \" (sin comillas). Ejemplos de algunas operaciones comunes[editar] Asignacin: asignarle una cadena a otra char *strcpy(char [], const char[]); # en C cadena1=cadena2; # en C++ cadena1 := cadena2 # en Smalltalk
Operadores de asignacin C++ dispone de los siguientes operadores de asingacin:
Sintaxis: Ejemplo: x = 3; x += 3; x &= 3; Todos ellos son operadores binarios, de los cuales,b>= es el nico de asignacin simple, los dems son operadores de asignacin compuestos Los seis primeros aceptan operandos de distinto tipo, mientras que los cinco ltimos: =, &=, ^= y |=, implican manejo de bits por lo que sus operandos deben ser tipos int en sus distintas variantes. No olvidar que las expresiones de asignacin producen un resultado. El tipo resultante es el de la (izquierda); el valor que se aplica es el determinado por el Rvalue El valor resultante de despus de la asignacin, es el resultado de la expresin (el Lvalue). As pues, cualquiera que sea su sentido concreto, todos implican la "copia" de un bloque de memoria (que contiene el "resultado") en algn sitio (la direccin indicada por el Rvalue).
Ejemplo: int num; float f = 3.14; num = f + 1; En este caso, el valor 4.14, resultado de <expr-derecha>, se aplica a num. Teniendo en cuenta que el tipo resultante debe ser el de num (un int en este caso), se realiza automticamente una conversin del float 4.14 a int (con prdida de precisin si es necesario), con el resultado de que num recibe el valor 4 y el resultado de la asignacin es un int de valor 4.
3.2 Esta propiedad de las asignaciones de producir un resultado, es justamente la que permite expresiones de asignacin compuesta del tipo: A = B = C = D; y es ampliamente utilizada en la programacin de C++. Considere el bucle del siguiente ejemplo: while ( (ch = getchar() ) != 27 ) ; aprovechando que en este caso, el resultado de la asignacin es un char, se utiliza directamente en la clusula del while, resultando que el bucle se ejecuta indefinidamente hasta que se pulse la tecla ESC (escape).
3.3 En general las sentencias de asignacin tienen la forma: variable = expresion La parte izquierda (que tiene que ser un Lvalue no constante) adquiere el valor sealado en la expresin de la derecha, pero se mantiene el tipo original de la variable de la parte izquierda. En caso necesario se realiza una conversin de tipo (con prdida de precisin en su caso) del izquierdo al derecho. Nota: observe que el operador C++ de asignacin simple (=) se distingue de otros lenguajes como Pascal que utilizan el smbolo := para este operador. Observe tambin que la asignacin simple (=) utiliza un smbolo distinto del operador relacional de igualdad (==).
4 Las variables se pueden inicializar en el mismo momento de la declaracin (asignndoles un valor). Este es el nico caso en que se puede asignar una constante [2]. Ejemplo: int primero = 0; char ch = a; float balance = 123.456; char string[10] = "1234567890"; const float pi = 3.14159 ;
5 En la expresin E1 = E2, E1 debe ser un Lvalue modificable, en caso contrario puede obtenerse un mensaje de error: Lvalue required [1]. Por ejemplo, una vez declarado char a[10], ninguna de las dos sentencias que siguen es vlida: a = "0123456789"; a[10] = "0123456789";