SlideShare una empresa de Scribd logo
Cadenas y funciones de
cadena
Parte 1
Clase 11
Cadenas y funciones de cadena
• C++ ( y su lenguaje padre, C) no tiene datos predefinidos tipo
cadena (string). En su lugar, C++, como C, manipula cadenas
mediante arrays de caracteres que terminan con el carácter nulo
ASCII (‘ 0’).
• Una cadena se considera como un array unidimensional de tipo
char o unsigned char.
Cadenas y funciones de cadena
L a c a d e n a d e t e s t
L a c a d e n a d e t e s t 0
a)
b)
b) Cadena caracteres
a) Array de caracteres
Concepto de Cadena
• Una cadena es un tipo dato compuesto, un array de caracteres
(char), terminado por un carácter nulo (‘ /0’).
• Una cadena (también llamada constante de cadena o literal de
cadena) es “ABC”. Cuando la cadena aparece dentro de un
programa se verá como si se almacenaran cuatro elementos: ‘A’,
‘B’, ‘C’ y ‘0’.
Concepto de Cadena
• En consecuencia, se considera que la cadena “ABC” es un array
de cuatro elementos de tipo char.
• El valor real de esta cadena es la dirección de su primer carácter y
su tipo es un puntero char. Aplicando el operador * a un objeto de
tipo se obtiene el carácter que forma su contenido; es posible
también utilizar aritmética de direcciones con cadenas:
Concepto de Cadena
*”ABC” Es igual a ‘A’
*(“ABC” +1) Es igual a ‘B’
*(“ABC” +2) Es igual a ‘C’
*(“ABC” +3) Es igual a ‘0’
Concepto de Cadena
• De igual forma, utilizando el subíndice del array se puede escribir:
“ABC” [0] Es igual a ‘A’
“ABC” [1] Es igual a ‘B’
“ABC” [2] Es igual a ‘C’
“ABC” [3] Es igual a ‘0’
Declaración de variables de cadena
• Las cadenas se declaran como los restantes tipos de arrays. El
operador postfijo [ ] contiene el tamaño máximo del objeto. El
tipo base, naturalmente, es char, o bien unsigned char.
Declaración de variables de cadena
Declaración de variables de cadena
• El tipo unsigned char puede ser de interés en aquellos casos
en que los caracteres especiales presentes puedan tener el
bit de orden alto activado. Si el carácter se considera con
signo, el bit de mayor peso (orden alto) se interpreta como
bit de signo y se puede propagar a la posición de mayor
orden (peso) de nuevo tipo.
Declaración de variables de cadena
• Observe que el tamaño de la cadena ha de incluir el
carácter ‘0’. En consecuencia, para definir un array de
caracteres que contenga la cadena “ABC-DEF”, escriba:
Inicialización de variables de cadena
• Todos los tipos de arrays requieren una inicialización que
consiste en una lista de valores separados por comas y
encerrados entre llaves.
Inicialización de variables de cadena
• Dado que en el literal hay 36 caracteres y el compilador
añade el carácter ‘0’, un total de 37 caracteres se
asignarán a cadenatest.
• Ahora bien, una dena no se puede inicializar fuera de la
declaración. Por ejemplo, si se trata de hacer
Inicialización de variables de cadena
• C++ le dará un error al compilar. La razón es que un identificador
de cadena, como cualquier identificador de Array, se trata como
un valor de dirección.
• ¿Cómo se puede inicializar una cadena fuera de la declaración?
Más adelante se verá, pero podemos indicar que será necesario
utilizar una función de cadena denominada strcpy ( ).
Inicialización de variables de cadena
• La lectura usual de datos con el objeto cin y el operador
>>, cuando se aplica a datos de cadena, producirá
normalmente anomalías. Así, por ejemplo, trate de
ejecutar el siguiente programa:
Inicialización de variables de cadena
Inicialización de variables de cadena
• El programa define Nombre como un array de caracteres
de 30 elementos. Suponga que introduce la entrada Pepe
Mackoy, cuando ejecuta el programa se visualizara en
pantalla Pepe. Es decir la palabra Mackoy no se ha
asignado a la variable cadena Nombre.
Inicialización de variables de cadena
• La razón es que el objeto cin termina la operación de lectura
siempre que se encuentra en un espacio en blanco.
• Así pues, ¿Cuál será el método correcto para lectura de
cadenas, cuando estas cadenas, contienen mas de una
palabra (caso muy usual)?
Inicialización de variables de cadena
• El método recomendado será utilizar una función
denominada getline( ), en unión con cin, en lugar del
operador >>. La función getline permitirá a cin leer la
cadena completa, incluyendo cualquier espacio en
blanco.
Inicialización de variables de cadena
• cin es un objeto de la clase istream y getline ( ) es una
función miembro de la clase iostream; en consecuencia,
cin puede llamar a getline ( ) para leer una línea
completa incluyendo cualquier espacio en blanco.
Inicialización de variables de cadena
• La sintaxis de la función getline ( ) es:
Inicialización de variables de cadena
• La lectura de cadenas con cin se realiza con el siguiente
formato:
Inicialización de variables de cadena
• La función getline ( ) utiliza tres argumentos. El primer
argumento es el identificador de la variable cadena (nombre
de la cadena). El segundo argumento es la longitud máxima
de la cadena (él numero máximo de caracteres que se
leerán), que debe ser al menos dos caracteres mayor que la
cadena real, para permitir el carácter nulo ‘0’y el ‘n’.
Inicialización de variables de cadena
• Por ultimo, el carácter separador se lee y almacena
como el siguiente al ultimo carácter de la cadena. La
función getline ( ) inserta automáticamente el carácter
núlo como le ultimo carácter de la cadena.
Inicialización de variables de cadena
• El ejemplo anterior para leer la cadena Nombre se
convierte en:
Inicialización de variables de cadena
Inicialización de variables de cadena
• Si se introduce la cadena Pepe Markov, el Array Nombre almacenará los
caracteres siguientes:
• Nombre
• [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12]
P e P e M a r k o y ‘n’ ‘0’ … datos
aleatorio
s
Ejemplo
Ejemplo
Cadenas y funciones de cadena
• El siguiente programa lee y escribe el nombre, dirección y teléfono
de un usuario
Cadenas y funciones de cadena
• Esto es muy sencillo si usamos la función cin.getline( ); Esta función necesita
tres datos o parámetros:
• Nombre. El nombre de la variable que va a contener el string
• Longitud. La cantidad de caracteres que queremos que se puedan introducir
(nunca mayor que la longitud del string).
• Carácter de fin. El carácter que el usuario va usar como final de la cadena. Por
lo general es el ‘enter’ que se representa como ‘n’ (diagonal n).
Cadenas y funciones de cadena
La Biblioteca String.h
• La biblioteca estándar de C++ contiene la biblioteca de cadena
STRING.H, que contiene las funciones de manipulación de cadenas
utilizadas mas frecuentemente.
• Los archivos de cabecera STDIO.H e IOSTREAM.H también soportan E/S
de cadenas. Algunos fabricantes de C++ también incorporan otras
bibliotecas para manipular cadenas, pero como no son estándar no se
consideraran en esta sesión.
La Biblioteca String.h
• El uso de las funciones de cadena tienen una variable parámetros
a declarada similar a:
La Biblioteca String.h
• Esto significa que la función esperar un puntero a una cadena.
Cuando se utiliza la función, se puede usar un puntero a una
cadena o se puede especificar el nombre de una variable array
char. La Tabla 1 resume algunas de las funciones cadena más
usuales.
La Biblioteca String.h
Función Cabecera de la función y prototipo
strlen size_t strlen(const char *s);
Devuelve la longitud de la cadena s.
strcpy char * strcpy(char *dest, const char *fuente);
Copia la cadena fuente a la cadena destino
strcmp in strcmp(const char *s1, const char *s2);
Compara la cadena s1 a s2 y devuelve:
0 si s1 = s2
<0 si s1 < s2
>0 si s1 > s2
strcmpi int strcmpi(const char *s1, const char *s2);
Igual que strcmp( ), pero trata los caracteres como
si fueran todos minusculas
strcat char *strcat(char *destino, const char *fuente);
Añade la cadena fuente al final de destino
strnset char *strnset(char *s, int ch, size_t n);
Utiliza strcmp( ) sobre una cadena existente par
fijar n bytes de la cadena al carácter ch.
strstr char *strstr(const char *s1, const char *s2);
Busca la cadena s2 en s1 y devuelve un puntero a
los caracteres donde se encuentra s2.
La palabra reservada const
• Las funciones de cadena declaradas en STRING.H, recogidas en la
Tabla 1 y algunas otras, incluyen la palabra reservada const. La
ventaja de esta palabra reservada es que se puede ver
rápidamente la diferencia entre los parámetros de entrada y
salida.
La palabra reservada const
• Por ejemplo, el segundo parámetro fuente de strcpy representa el
área fuente; se utiliza solo para copiar los caracteres de ella, de
modo que esta área no se modificara. La palabra reservada const
se utiliza para esta tarea.
• Se considera un parámetro de entrada, ya que la función recibe
datos a través de ella.
La palabra reservada const
• En contraste el primer parámetro dest de strcmpy es el área de
destino, la cual se sobrescribirá y, por consiguiente, no se debe
utilizar const para ello. En este caso, el parámetro
correspondiente se denomina parámetro de salida, ya que los
datos se escriben en el área destino.
Arrays y Cadenas como parámetros de
funciones
• Los arrays y cadenas se pueden pasar solo por referencia, no por
valor. En la función, las referencias a los elementos individuales se
hacen por indirección de la dirección objeto.
Arrays y Cadenas como parámetros de
funciones
• Considérese el programa C++ PASARRAY.CPP, que implementa una
función Longitud( ) que calcula la longitud de una cadena
terminada en nulo. El parámetro cad se declara como un array de
caracteres de tamaño desconocido.
• Este ejemplo es un caso que muestra el paso de un array por
valor, método no recomendado.
Arrays y Cadenas como parámetros de
funciones
Arrays y Cadenas como parámetros de
funciones
Arrays y Cadenas como parámetros de
funciones
• El programa principal contiene el código para la
dirección de la constante de cadena a la función
Longitud ( ). El cuerpo bucle while dentro de la función
cuenta con los caracteres no nulos y termina cuando se
encuentra el byte nulo al final de la cadena.
Uso del operador de referencia para tipos
array
• Otro método de escribir la función Longitud ( ) es utilizar
el operador de referencia & C++. Cuando se utiliza este
operador, se pasa por el parámetro por referencia.
Uso del operador de referencia para tipos
array
• Se puede dar un nombre nuevo a cualquier tipo de datos mediante typedef.
• La sintaxis es typedef declaración;
• donde declaración tiene la forma de una declaración de variable, sólo que se
está definiendo un tipo de datos.
• typedef long pareja [2];
Uso del operador de referencia para tipos
array
• define un tipo pareja que se puede usar en declaraciones de variables:
• pareja p;
• es equivalente a
• long p [2];
Uso del operador de referencia para tipos
array
Uso del operador de referencia para tipos
array
Uso de punteros para pasar una cadena
• Los punteros se pueden utilizar para pasar arrays a funciones:
Uso de punteros para pasar una cadena
Uso de punteros para pasar una cadena
• Observe que en las declaraciones de parámetros ningún array esta definido sino
punteros tipo char. En la línea:
• *dest++ = *fuente++;
• Los punteros se utilizan para acceder a las cadenas fuente y destino,
respectivamente. En la llamada a la función extraer se utiliza el operador &
para obtener la dirección de las cadenas fuente y destino.
Asignación de Cadenas
• C++ soporta dos métodos para asignar cadenas. Uno de ellos se ha visto cuando
se inicializan las variables de cadena. La sintaxis utilizada era
Ejemplo
• C++ soporta dos métodos para asignar cadenas. Uno de ellos se ha visto cuando
se inicializan las variables de cadena. La sintaxis utilizada era
Ejemplo
• El segundo método para asignación de una cadena a otra es utilizar la función
strcpy. La función strcpy copia los caracteres de la cadena fuente a la carpeta
destino. La funcione supone que la cadena destino tiene espacio suficiente
para contener toda la cadena fuente. El prototipo de función es:
Ejemplo
Ejemplo
• La función strcpy( ) copia “Cadena a copiar” en la cadena nombre
y añade un carácter nulo al final de la cadena resultante. El
siguiente programa muestra una aplicación de strcpy ( ).
Ejemplo
Ejemplo

Más contenido relacionado

La actualidad más candente

Illustrator cs6 tutorial Compilación
Illustrator cs6 tutorial CompilaciónIllustrator cs6 tutorial Compilación
Illustrator cs6 tutorial Compilación
Myriam Noury Punina
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
Rolando Steep Quezada Martinez
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
Cesar Oswaldo Osorio Agualongo
 
Tema grafos
Tema grafosTema grafos
Teoria del modelado de objetos otros diagramas actividad despliegue
Teoria del modelado de objetos otros diagramas actividad despliegueTeoria del modelado de objetos otros diagramas actividad despliegue
Teoria del modelado de objetos otros diagramas actividad despliegue
Robert Rodriguez
 
Ado.net
Ado.netAdo.net
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
Carlos Alberto Cuervo Cardenas
 
Fases de resolucion de problemas
Fases de resolucion de problemasFases de resolucion de problemas
Fases de resolucion de problemas
ncrmax
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
Waldi Misael Saturno Encarnacion
 
06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C
Diego Andrés Alvarez Marín
 
JAVA PROGRAMMING - The Collections Framework
JAVA PROGRAMMING - The Collections Framework JAVA PROGRAMMING - The Collections Framework
JAVA PROGRAMMING - The Collections Framework
Jyothishmathi Institute of Technology and Science Karimnagar
 
Diagramas clases presentacion
Diagramas clases presentacionDiagramas clases presentacion
Diagramas clases presentacion
josebrandon24
 
Guia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansGuia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeans
Emerson Garay
 
Tema 1-2 identificadores - variable y constante
Tema 1-2 identificadores - variable y constanteTema 1-2 identificadores - variable y constante
Tema 1-2 identificadores - variable y constante
Rufi Flores
 
graphics programming in java
graphics programming in javagraphics programming in java
graphics programming in java
Abinaya B
 
Unidad 5 Estructuras algoritmicas
Unidad 5 Estructuras algoritmicasUnidad 5 Estructuras algoritmicas
Unidad 5 Estructuras algoritmicas
Carlos M. Sandoval
 
Presentación JavaScript
Presentación JavaScriptPresentación JavaScript
Presentación JavaScript
Lorenzo Morillas Tomás
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivas
marigelcontreras
 
Arquitectura pizarra
Arquitectura pizarraArquitectura pizarra
Arquitectura pizarra
Daniel Santillan
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
José Antonio Sandoval Acosta
 

La actualidad más candente (20)

Illustrator cs6 tutorial Compilación
Illustrator cs6 tutorial CompilaciónIllustrator cs6 tutorial Compilación
Illustrator cs6 tutorial Compilación
 
Herencia Y Polimorfismo
Herencia Y PolimorfismoHerencia Y Polimorfismo
Herencia Y Polimorfismo
 
Estructuras en c++
Estructuras en c++Estructuras en c++
Estructuras en c++
 
Tema grafos
Tema grafosTema grafos
Tema grafos
 
Teoria del modelado de objetos otros diagramas actividad despliegue
Teoria del modelado de objetos otros diagramas actividad despliegueTeoria del modelado de objetos otros diagramas actividad despliegue
Teoria del modelado de objetos otros diagramas actividad despliegue
 
Ado.net
Ado.netAdo.net
Ado.net
 
Tipos de listas en estructura de datos
Tipos de listas en estructura de datosTipos de listas en estructura de datos
Tipos de listas en estructura de datos
 
Fases de resolucion de problemas
Fases de resolucion de problemasFases de resolucion de problemas
Fases de resolucion de problemas
 
Pilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datosPilas, colas, y listas estructura de datos
Pilas, colas, y listas estructura de datos
 
06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C06 - Arrays y matrices en lenguaje C
06 - Arrays y matrices en lenguaje C
 
JAVA PROGRAMMING - The Collections Framework
JAVA PROGRAMMING - The Collections Framework JAVA PROGRAMMING - The Collections Framework
JAVA PROGRAMMING - The Collections Framework
 
Diagramas clases presentacion
Diagramas clases presentacionDiagramas clases presentacion
Diagramas clases presentacion
 
Guia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeansGuia practica funciones en java con NetBeans
Guia practica funciones en java con NetBeans
 
Tema 1-2 identificadores - variable y constante
Tema 1-2 identificadores - variable y constanteTema 1-2 identificadores - variable y constante
Tema 1-2 identificadores - variable y constante
 
graphics programming in java
graphics programming in javagraphics programming in java
graphics programming in java
 
Unidad 5 Estructuras algoritmicas
Unidad 5 Estructuras algoritmicasUnidad 5 Estructuras algoritmicas
Unidad 5 Estructuras algoritmicas
 
Presentación JavaScript
Presentación JavaScriptPresentación JavaScript
Presentación JavaScript
 
Estructuras de control selectivas
Estructuras de control selectivasEstructuras de control selectivas
Estructuras de control selectivas
 
Arquitectura pizarra
Arquitectura pizarraArquitectura pizarra
Arquitectura pizarra
 
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datosEstructura de datos - Unidad 1: Introducción a las estructuras de datos
Estructura de datos - Unidad 1: Introducción a las estructuras de datos
 

Destacado

CADENAS-Y-ESTIRADORES-KINEDYNE
CADENAS-Y-ESTIRADORES-KINEDYNECADENAS-Y-ESTIRADORES-KINEDYNE
CADENAS-Y-ESTIRADORES-KINEDYNE
villaallendemagazine
 
Factores humanos
Factores humanosFactores humanos
Factores humanos
Kleber Hurtado Castellanos
 
El error humano en la actividad profesional ii.docx
El error humano en la actividad profesional ii.docxEl error humano en la actividad profesional ii.docx
El error humano en la actividad profesional ii.docx
Israel Chava Gonzales
 
Manejo de cadenas de caracteres java
Manejo de cadenas de caracteres javaManejo de cadenas de caracteres java
Manejo de cadenas de caracteres java
Emerson Garay
 
Programación modular
Programación modularProgramación modular
Programación modular
Reina Rodriguez
 
Modelo queso suizo de reason
Modelo queso suizo de reasonModelo queso suizo de reason
Modelo queso suizo de reason
Edmundo Tamayo
 
Clase de ffhh 1 (1)
Clase de ffhh 1 (1)Clase de ffhh 1 (1)
Clase de ffhh 1 (1)
flosenin
 
FAST HUG BID
FAST HUG BIDFAST HUG BID
Conciencia situacional
Conciencia situacionalConciencia situacional
Conciencia situacional
angie205
 
Error en Medicina - 2008
Error en Medicina - 2008Error en Medicina - 2008
Error en Medicina - 2008
Carlos Renato Cengarle
 
DIAPOSITIVAS Cadena de suministros
DIAPOSITIVAS Cadena de suministrosDIAPOSITIVAS Cadena de suministros
DIAPOSITIVAS Cadena de suministros
zaima151288
 
CRM
CRMCRM
Conciencia situacional pp
Conciencia situacional ppConciencia situacional pp
Conciencia situacional pp
richardguerra
 
Conceptos Sobre El Error Humano
Conceptos Sobre El Error HumanoConceptos Sobre El Error Humano
Conceptos Sobre El Error Humano
Eduardo Vargas
 
Factores Humanos-Presentación (3 de 4)
Factores Humanos-Presentación (3 de 4)Factores Humanos-Presentación (3 de 4)
Factores Humanos-Presentación (3 de 4)
becrouzeilles
 
Investigacion de factores humanos en accidentes aeronauticos
Investigacion de factores humanos en accidentes aeronauticosInvestigacion de factores humanos en accidentes aeronauticos
Investigacion de factores humanos en accidentes aeronauticos
richardguerra
 
El factor humano en mantenimiento de aeronaves
El factor humano en mantenimiento de aeronavesEl factor humano en mantenimiento de aeronaves
El factor humano en mantenimiento de aeronaves
aergenium - blog aeronáutico andaluz
 
Teoría del error humano
Teoría del error humanoTeoría del error humano
Teoría del error humano
Jose Luis
 
Catalogo imagenes-equipos-abiertos-cadenas-tensores
Catalogo imagenes-equipos-abiertos-cadenas-tensoresCatalogo imagenes-equipos-abiertos-cadenas-tensores
Catalogo imagenes-equipos-abiertos-cadenas-tensores
villaallendemagazine
 

Destacado (19)

CADENAS-Y-ESTIRADORES-KINEDYNE
CADENAS-Y-ESTIRADORES-KINEDYNECADENAS-Y-ESTIRADORES-KINEDYNE
CADENAS-Y-ESTIRADORES-KINEDYNE
 
Factores humanos
Factores humanosFactores humanos
Factores humanos
 
El error humano en la actividad profesional ii.docx
El error humano en la actividad profesional ii.docxEl error humano en la actividad profesional ii.docx
El error humano en la actividad profesional ii.docx
 
Manejo de cadenas de caracteres java
Manejo de cadenas de caracteres javaManejo de cadenas de caracteres java
Manejo de cadenas de caracteres java
 
Programación modular
Programación modularProgramación modular
Programación modular
 
Modelo queso suizo de reason
Modelo queso suizo de reasonModelo queso suizo de reason
Modelo queso suizo de reason
 
Clase de ffhh 1 (1)
Clase de ffhh 1 (1)Clase de ffhh 1 (1)
Clase de ffhh 1 (1)
 
FAST HUG BID
FAST HUG BIDFAST HUG BID
FAST HUG BID
 
Conciencia situacional
Conciencia situacionalConciencia situacional
Conciencia situacional
 
Error en Medicina - 2008
Error en Medicina - 2008Error en Medicina - 2008
Error en Medicina - 2008
 
DIAPOSITIVAS Cadena de suministros
DIAPOSITIVAS Cadena de suministrosDIAPOSITIVAS Cadena de suministros
DIAPOSITIVAS Cadena de suministros
 
CRM
CRMCRM
CRM
 
Conciencia situacional pp
Conciencia situacional ppConciencia situacional pp
Conciencia situacional pp
 
Conceptos Sobre El Error Humano
Conceptos Sobre El Error HumanoConceptos Sobre El Error Humano
Conceptos Sobre El Error Humano
 
Factores Humanos-Presentación (3 de 4)
Factores Humanos-Presentación (3 de 4)Factores Humanos-Presentación (3 de 4)
Factores Humanos-Presentación (3 de 4)
 
Investigacion de factores humanos en accidentes aeronauticos
Investigacion de factores humanos en accidentes aeronauticosInvestigacion de factores humanos en accidentes aeronauticos
Investigacion de factores humanos en accidentes aeronauticos
 
El factor humano en mantenimiento de aeronaves
El factor humano en mantenimiento de aeronavesEl factor humano en mantenimiento de aeronaves
El factor humano en mantenimiento de aeronaves
 
Teoría del error humano
Teoría del error humanoTeoría del error humano
Teoría del error humano
 
Catalogo imagenes-equipos-abiertos-cadenas-tensores
Catalogo imagenes-equipos-abiertos-cadenas-tensoresCatalogo imagenes-equipos-abiertos-cadenas-tensores
Catalogo imagenes-equipos-abiertos-cadenas-tensores
 

Similar a Cadenas y funciones de cadena

Pe15 cadenacaracteres
Pe15 cadenacaracteresPe15 cadenacaracteres
Pe15 cadenacaracteres
Marco Antonio Plascencia
 
Cadenas
CadenasCadenas
Cadenas de Caracteres
Cadenas de CaracteresCadenas de Caracteres
Cadenas de Caracteres
Andres Chiriboga
 
Asignacion
AsignacionAsignacion
Asignacion
Fernando Solis
 
Cadena Juan Bastidas
Cadena Juan BastidasCadena Juan Bastidas
Cadena Juan Bastidas
Juan Bastidas
 
6.2 cadenas de caracteres
6.2 cadenas de caracteres6.2 cadenas de caracteres
6.2 cadenas de caracteres
SNPP
 
Apunte cadenas
Apunte cadenasApunte cadenas
Apunte cadenas
Carina del Milagro Ruiz
 
Capitulo 8 Cadenas
Capitulo 8  CadenasCapitulo 8  Cadenas
Capitulo 8 Cadenas
guest506dc9
 
Programacion
ProgramacionProgramacion
Programacion
Jefferson Curay
 
Programacion
ProgramacionProgramacion
Programacion
Jefferson Curay
 
Cadenas y/o strings
Cadenas y/o stringsCadenas y/o strings
Cadenas y/o strings
Fernando Solis
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostream
Tensor
 
Funciones cadena
Funciones cadenaFunciones cadena
Funciones cadena
Tutorial Html
 
!Prograc8
!Prograc8!Prograc8
!Prograc8
robertoxe
 
Fundamentos de programación librería string C++
Fundamentos de programación librería string C++Fundamentos de programación librería string C++
Fundamentos de programación librería string C++
Milton Nicolay
 
Librerias de dev c++
Librerias de dev c++Librerias de dev c++
Librerias de dev c++
fredyorellana7
 
Cadenas De Caracteres
Cadenas De CaracteresCadenas De Caracteres
Cadenas De Caracteres
Mauricio
 
Escuela Politecnica Del Ejercito
Escuela Politecnica Del EjercitoEscuela Politecnica Del Ejercito
Escuela Politecnica Del Ejercito
wilpto
 
Longitud de cadena y funciones en java
Longitud de cadena y funciones en javaLongitud de cadena y funciones en java
Longitud de cadena y funciones en java
Robert Wolf
 
Intro matlab msantos
Intro matlab msantosIntro matlab msantos
Intro matlab msantos
Laureano Zantedeschi
 

Similar a Cadenas y funciones de cadena (20)

Pe15 cadenacaracteres
Pe15 cadenacaracteresPe15 cadenacaracteres
Pe15 cadenacaracteres
 
Cadenas
CadenasCadenas
Cadenas
 
Cadenas de Caracteres
Cadenas de CaracteresCadenas de Caracteres
Cadenas de Caracteres
 
Asignacion
AsignacionAsignacion
Asignacion
 
Cadena Juan Bastidas
Cadena Juan BastidasCadena Juan Bastidas
Cadena Juan Bastidas
 
6.2 cadenas de caracteres
6.2 cadenas de caracteres6.2 cadenas de caracteres
6.2 cadenas de caracteres
 
Apunte cadenas
Apunte cadenasApunte cadenas
Apunte cadenas
 
Capitulo 8 Cadenas
Capitulo 8  CadenasCapitulo 8  Cadenas
Capitulo 8 Cadenas
 
Programacion
ProgramacionProgramacion
Programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Cadenas y/o strings
Cadenas y/o stringsCadenas y/o strings
Cadenas y/o strings
 
Uso de las clases iostream
Uso de las clases iostreamUso de las clases iostream
Uso de las clases iostream
 
Funciones cadena
Funciones cadenaFunciones cadena
Funciones cadena
 
!Prograc8
!Prograc8!Prograc8
!Prograc8
 
Fundamentos de programación librería string C++
Fundamentos de programación librería string C++Fundamentos de programación librería string C++
Fundamentos de programación librería string C++
 
Librerias de dev c++
Librerias de dev c++Librerias de dev c++
Librerias de dev c++
 
Cadenas De Caracteres
Cadenas De CaracteresCadenas De Caracteres
Cadenas De Caracteres
 
Escuela Politecnica Del Ejercito
Escuela Politecnica Del EjercitoEscuela Politecnica Del Ejercito
Escuela Politecnica Del Ejercito
 
Longitud de cadena y funciones en java
Longitud de cadena y funciones en javaLongitud de cadena y funciones en java
Longitud de cadena y funciones en java
 
Intro matlab msantos
Intro matlab msantosIntro matlab msantos
Intro matlab msantos
 

Más de Tensor

Libertad
LibertadLibertad
Libertad
Tensor
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)
Tensor
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisección
Tensor
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicular
Tensor
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colas
Tensor
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016
Tensor
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016
Tensor
 
Game maker
Game makerGame maker
Game maker
Tensor
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016
Tensor
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivos
Tensor
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadena
Tensor
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04
Tensor
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de orden
Tensor
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametros
Tensor
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposición
Tensor
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricatti
Tensor
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicio
Tensor
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadas
Tensor
 
Ondas em
Ondas emOndas em
Ondas em
Tensor
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticas
Tensor
 

Más de Tensor (20)

Libertad
LibertadLibertad
Libertad
 
Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)Método de la regla falsa (o metodo de la falsa posición)
Método de la regla falsa (o metodo de la falsa posición)
 
Metodo de la bisección
Metodo de la bisecciónMetodo de la bisección
Metodo de la bisección
 
Transito vehicular
Transito vehicularTransito vehicular
Transito vehicular
 
Teoria de colas
Teoria de colasTeoria de colas
Teoria de colas
 
Practica 7 2016
Practica 7 2016Practica 7 2016
Practica 7 2016
 
Practica 6 2016
Practica 6 2016Practica 6 2016
Practica 6 2016
 
Game maker
Game makerGame maker
Game maker
 
Practica 5 2016
Practica 5 2016Practica 5 2016
Practica 5 2016
 
Procesamiento de archivos
Procesamiento de archivosProcesamiento de archivos
Procesamiento de archivos
 
Cadenas y funciones de cadena
Cadenas y funciones de cadenaCadenas y funciones de cadena
Cadenas y funciones de cadena
 
Simulación en promodel clase 04
Simulación en promodel clase 04Simulación en promodel clase 04
Simulación en promodel clase 04
 
Reduccion de orden
Reduccion de ordenReduccion de orden
Reduccion de orden
 
Variación+de+parametros
Variación+de+parametrosVariación+de+parametros
Variación+de+parametros
 
Coeficientes indeterminados enfoque de superposición
Coeficientes indeterminados   enfoque de superposiciónCoeficientes indeterminados   enfoque de superposición
Coeficientes indeterminados enfoque de superposición
 
Bernoulli y ricatti
Bernoulli y ricattiBernoulli y ricatti
Bernoulli y ricatti
 
Practica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicioPractica no. 3 tiempo de servicio
Practica no. 3 tiempo de servicio
 
Clase 14 ondas reflejadas
Clase 14 ondas reflejadasClase 14 ondas reflejadas
Clase 14 ondas reflejadas
 
Ondas em
Ondas emOndas em
Ondas em
 
Clase 7 ondas electromagneticas
Clase 7 ondas electromagneticasClase 7 ondas electromagneticas
Clase 7 ondas electromagneticas
 

Último

CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIACONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
ginnazamudio
 
Sesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdfSesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdf
https://gramadal.wordpress.com/
 
1° T3 Examen Zany de primer grado compl
1° T3 Examen Zany  de primer grado compl1° T3 Examen Zany  de primer grado compl
1° T3 Examen Zany de primer grado compl
ROCIORUIZQUEZADA
 
2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado
GiselaBerrios3
 
Las diversas Sociedades Mercantiles Mexico.pdf
Las diversas Sociedades Mercantiles Mexico.pdfLas diversas Sociedades Mercantiles Mexico.pdf
Las diversas Sociedades Mercantiles Mexico.pdf
La Paradoja educativa
 
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdfGuia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Demetrio Ccesa Rayme
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Juan Martín Martín
 
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptxSEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
Osiris Urbano
 
pueblos originarios de chile presentacion twinkl.pptx
pueblos originarios de chile presentacion twinkl.pptxpueblos originarios de chile presentacion twinkl.pptx
pueblos originarios de chile presentacion twinkl.pptx
RAMIREZNICOLE
 
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdfBlogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
lautyzaracho4
 
Docentes y el uso de chatGPT en el Aula Ccesa007.pdf
Docentes y el uso de chatGPT   en el Aula Ccesa007.pdfDocentes y el uso de chatGPT   en el Aula Ccesa007.pdf
Docentes y el uso de chatGPT en el Aula Ccesa007.pdf
Demetrio Ccesa Rayme
 
665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
valerytorresmendizab
 
Presentación Curso C. Diferencial - 2024-1.pdf
Presentación Curso C. Diferencial - 2024-1.pdfPresentación Curso C. Diferencial - 2024-1.pdf
Presentación Curso C. Diferencial - 2024-1.pdf
H4RV3YH3RN4ND3Z
 
Manual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HCManual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HC
josseanlo1581
 
Biografía de Gregor Mendel y sus 3 leyes.pptx
Biografía de Gregor Mendel y sus 3 leyes.pptxBiografía de Gregor Mendel y sus 3 leyes.pptx
Biografía de Gregor Mendel y sus 3 leyes.pptx
ar5498718
 
El espiritismo desenmascarado.pdf. Lec. 10
El espiritismo desenmascarado.pdf. Lec. 10El espiritismo desenmascarado.pdf. Lec. 10
El espiritismo desenmascarado.pdf. Lec. 10
Alejandrino Halire Ccahuana
 
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
20minutos
 
Presidencias radicales (1916 – 1930) (1) (1).pdf
Presidencias radicales (1916 – 1930) (1) (1).pdfPresidencias radicales (1916 – 1930) (1) (1).pdf
Presidencias radicales (1916 – 1930) (1) (1).pdf
MARIANA110300
 
teorema de pitagorasparalaeducacion.pptx
teorema de pitagorasparalaeducacion.pptxteorema de pitagorasparalaeducacion.pptx
teorema de pitagorasparalaeducacion.pptx
ElzebirQuiroga
 
Examen de la EvAU 2024 en Navarra Latín.
Examen de la EvAU 2024 en Navarra Latín.Examen de la EvAU 2024 en Navarra Latín.
Examen de la EvAU 2024 en Navarra Latín.
amayaltc18
 

Último (20)

CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIACONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
 
Sesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdfSesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdf
 
1° T3 Examen Zany de primer grado compl
1° T3 Examen Zany  de primer grado compl1° T3 Examen Zany  de primer grado compl
1° T3 Examen Zany de primer grado compl
 
2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado
 
Las diversas Sociedades Mercantiles Mexico.pdf
Las diversas Sociedades Mercantiles Mexico.pdfLas diversas Sociedades Mercantiles Mexico.pdf
Las diversas Sociedades Mercantiles Mexico.pdf
 
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdfGuia Practica de ChatGPT para Docentes Ccesa007.pdf
Guia Practica de ChatGPT para Docentes Ccesa007.pdf
 
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLMExamen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
Examen de Selectividad. Geografía junio 2024 (Convocatoria Ordinaria). UCLM
 
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptxSEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
SEMIOLOGIA DE HEMORRAGIAS DIGESTIVAS.pptx
 
pueblos originarios de chile presentacion twinkl.pptx
pueblos originarios de chile presentacion twinkl.pptxpueblos originarios de chile presentacion twinkl.pptx
pueblos originarios de chile presentacion twinkl.pptx
 
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdfBlogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
 
Docentes y el uso de chatGPT en el Aula Ccesa007.pdf
Docentes y el uso de chatGPT   en el Aula Ccesa007.pdfDocentes y el uso de chatGPT   en el Aula Ccesa007.pdf
Docentes y el uso de chatGPT en el Aula Ccesa007.pdf
 
665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
665033394-TODAS-LAS-SANGRES-resumen-Por-Capitulos.pdf
 
Presentación Curso C. Diferencial - 2024-1.pdf
Presentación Curso C. Diferencial - 2024-1.pdfPresentación Curso C. Diferencial - 2024-1.pdf
Presentación Curso C. Diferencial - 2024-1.pdf
 
Manual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HCManual de procedimiento para gráficos HC
Manual de procedimiento para gráficos HC
 
Biografía de Gregor Mendel y sus 3 leyes.pptx
Biografía de Gregor Mendel y sus 3 leyes.pptxBiografía de Gregor Mendel y sus 3 leyes.pptx
Biografía de Gregor Mendel y sus 3 leyes.pptx
 
El espiritismo desenmascarado.pdf. Lec. 10
El espiritismo desenmascarado.pdf. Lec. 10El espiritismo desenmascarado.pdf. Lec. 10
El espiritismo desenmascarado.pdf. Lec. 10
 
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
 
Presidencias radicales (1916 – 1930) (1) (1).pdf
Presidencias radicales (1916 – 1930) (1) (1).pdfPresidencias radicales (1916 – 1930) (1) (1).pdf
Presidencias radicales (1916 – 1930) (1) (1).pdf
 
teorema de pitagorasparalaeducacion.pptx
teorema de pitagorasparalaeducacion.pptxteorema de pitagorasparalaeducacion.pptx
teorema de pitagorasparalaeducacion.pptx
 
Examen de la EvAU 2024 en Navarra Latín.
Examen de la EvAU 2024 en Navarra Latín.Examen de la EvAU 2024 en Navarra Latín.
Examen de la EvAU 2024 en Navarra Latín.
 

Cadenas y funciones de cadena

  • 1. Cadenas y funciones de cadena Parte 1 Clase 11
  • 2. Cadenas y funciones de cadena • C++ ( y su lenguaje padre, C) no tiene datos predefinidos tipo cadena (string). En su lugar, C++, como C, manipula cadenas mediante arrays de caracteres que terminan con el carácter nulo ASCII (‘ 0’). • Una cadena se considera como un array unidimensional de tipo char o unsigned char.
  • 3. Cadenas y funciones de cadena L a c a d e n a d e t e s t L a c a d e n a d e t e s t 0 a) b) b) Cadena caracteres a) Array de caracteres
  • 4. Concepto de Cadena • Una cadena es un tipo dato compuesto, un array de caracteres (char), terminado por un carácter nulo (‘ /0’). • Una cadena (también llamada constante de cadena o literal de cadena) es “ABC”. Cuando la cadena aparece dentro de un programa se verá como si se almacenaran cuatro elementos: ‘A’, ‘B’, ‘C’ y ‘0’.
  • 5. Concepto de Cadena • En consecuencia, se considera que la cadena “ABC” es un array de cuatro elementos de tipo char. • El valor real de esta cadena es la dirección de su primer carácter y su tipo es un puntero char. Aplicando el operador * a un objeto de tipo se obtiene el carácter que forma su contenido; es posible también utilizar aritmética de direcciones con cadenas:
  • 6. Concepto de Cadena *”ABC” Es igual a ‘A’ *(“ABC” +1) Es igual a ‘B’ *(“ABC” +2) Es igual a ‘C’ *(“ABC” +3) Es igual a ‘0’
  • 7. Concepto de Cadena • De igual forma, utilizando el subíndice del array se puede escribir: “ABC” [0] Es igual a ‘A’ “ABC” [1] Es igual a ‘B’ “ABC” [2] Es igual a ‘C’ “ABC” [3] Es igual a ‘0’
  • 8. Declaración de variables de cadena • Las cadenas se declaran como los restantes tipos de arrays. El operador postfijo [ ] contiene el tamaño máximo del objeto. El tipo base, naturalmente, es char, o bien unsigned char.
  • 10. Declaración de variables de cadena • El tipo unsigned char puede ser de interés en aquellos casos en que los caracteres especiales presentes puedan tener el bit de orden alto activado. Si el carácter se considera con signo, el bit de mayor peso (orden alto) se interpreta como bit de signo y se puede propagar a la posición de mayor orden (peso) de nuevo tipo.
  • 11. Declaración de variables de cadena • Observe que el tamaño de la cadena ha de incluir el carácter ‘0’. En consecuencia, para definir un array de caracteres que contenga la cadena “ABC-DEF”, escriba:
  • 12. Inicialización de variables de cadena • Todos los tipos de arrays requieren una inicialización que consiste en una lista de valores separados por comas y encerrados entre llaves.
  • 13. Inicialización de variables de cadena • Dado que en el literal hay 36 caracteres y el compilador añade el carácter ‘0’, un total de 37 caracteres se asignarán a cadenatest. • Ahora bien, una dena no se puede inicializar fuera de la declaración. Por ejemplo, si se trata de hacer
  • 14. Inicialización de variables de cadena • C++ le dará un error al compilar. La razón es que un identificador de cadena, como cualquier identificador de Array, se trata como un valor de dirección. • ¿Cómo se puede inicializar una cadena fuera de la declaración? Más adelante se verá, pero podemos indicar que será necesario utilizar una función de cadena denominada strcpy ( ).
  • 15. Inicialización de variables de cadena • La lectura usual de datos con el objeto cin y el operador >>, cuando se aplica a datos de cadena, producirá normalmente anomalías. Así, por ejemplo, trate de ejecutar el siguiente programa:
  • 17. Inicialización de variables de cadena • El programa define Nombre como un array de caracteres de 30 elementos. Suponga que introduce la entrada Pepe Mackoy, cuando ejecuta el programa se visualizara en pantalla Pepe. Es decir la palabra Mackoy no se ha asignado a la variable cadena Nombre.
  • 18. Inicialización de variables de cadena • La razón es que el objeto cin termina la operación de lectura siempre que se encuentra en un espacio en blanco. • Así pues, ¿Cuál será el método correcto para lectura de cadenas, cuando estas cadenas, contienen mas de una palabra (caso muy usual)?
  • 19. Inicialización de variables de cadena • El método recomendado será utilizar una función denominada getline( ), en unión con cin, en lugar del operador >>. La función getline permitirá a cin leer la cadena completa, incluyendo cualquier espacio en blanco.
  • 20. Inicialización de variables de cadena • cin es un objeto de la clase istream y getline ( ) es una función miembro de la clase iostream; en consecuencia, cin puede llamar a getline ( ) para leer una línea completa incluyendo cualquier espacio en blanco.
  • 21. Inicialización de variables de cadena • La sintaxis de la función getline ( ) es:
  • 22. Inicialización de variables de cadena • La lectura de cadenas con cin se realiza con el siguiente formato:
  • 23. Inicialización de variables de cadena • La función getline ( ) utiliza tres argumentos. El primer argumento es el identificador de la variable cadena (nombre de la cadena). El segundo argumento es la longitud máxima de la cadena (él numero máximo de caracteres que se leerán), que debe ser al menos dos caracteres mayor que la cadena real, para permitir el carácter nulo ‘0’y el ‘n’.
  • 24. Inicialización de variables de cadena • Por ultimo, el carácter separador se lee y almacena como el siguiente al ultimo carácter de la cadena. La función getline ( ) inserta automáticamente el carácter núlo como le ultimo carácter de la cadena.
  • 25. Inicialización de variables de cadena • El ejemplo anterior para leer la cadena Nombre se convierte en:
  • 27. Inicialización de variables de cadena • Si se introduce la cadena Pepe Markov, el Array Nombre almacenará los caracteres siguientes: • Nombre • [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] P e P e M a r k o y ‘n’ ‘0’ … datos aleatorio s
  • 30. Cadenas y funciones de cadena • El siguiente programa lee y escribe el nombre, dirección y teléfono de un usuario
  • 31. Cadenas y funciones de cadena • Esto es muy sencillo si usamos la función cin.getline( ); Esta función necesita tres datos o parámetros: • Nombre. El nombre de la variable que va a contener el string • Longitud. La cantidad de caracteres que queremos que se puedan introducir (nunca mayor que la longitud del string). • Carácter de fin. El carácter que el usuario va usar como final de la cadena. Por lo general es el ‘enter’ que se representa como ‘n’ (diagonal n).
  • 32. Cadenas y funciones de cadena
  • 33. La Biblioteca String.h • La biblioteca estándar de C++ contiene la biblioteca de cadena STRING.H, que contiene las funciones de manipulación de cadenas utilizadas mas frecuentemente. • Los archivos de cabecera STDIO.H e IOSTREAM.H también soportan E/S de cadenas. Algunos fabricantes de C++ también incorporan otras bibliotecas para manipular cadenas, pero como no son estándar no se consideraran en esta sesión.
  • 34. La Biblioteca String.h • El uso de las funciones de cadena tienen una variable parámetros a declarada similar a:
  • 35. La Biblioteca String.h • Esto significa que la función esperar un puntero a una cadena. Cuando se utiliza la función, se puede usar un puntero a una cadena o se puede especificar el nombre de una variable array char. La Tabla 1 resume algunas de las funciones cadena más usuales.
  • 36. La Biblioteca String.h Función Cabecera de la función y prototipo strlen size_t strlen(const char *s); Devuelve la longitud de la cadena s. strcpy char * strcpy(char *dest, const char *fuente); Copia la cadena fuente a la cadena destino strcmp in strcmp(const char *s1, const char *s2); Compara la cadena s1 a s2 y devuelve: 0 si s1 = s2 <0 si s1 < s2 >0 si s1 > s2 strcmpi int strcmpi(const char *s1, const char *s2); Igual que strcmp( ), pero trata los caracteres como si fueran todos minusculas strcat char *strcat(char *destino, const char *fuente); Añade la cadena fuente al final de destino strnset char *strnset(char *s, int ch, size_t n); Utiliza strcmp( ) sobre una cadena existente par fijar n bytes de la cadena al carácter ch. strstr char *strstr(const char *s1, const char *s2); Busca la cadena s2 en s1 y devuelve un puntero a los caracteres donde se encuentra s2.
  • 37. La palabra reservada const • Las funciones de cadena declaradas en STRING.H, recogidas en la Tabla 1 y algunas otras, incluyen la palabra reservada const. La ventaja de esta palabra reservada es que se puede ver rápidamente la diferencia entre los parámetros de entrada y salida.
  • 38. La palabra reservada const • Por ejemplo, el segundo parámetro fuente de strcpy representa el área fuente; se utiliza solo para copiar los caracteres de ella, de modo que esta área no se modificara. La palabra reservada const se utiliza para esta tarea. • Se considera un parámetro de entrada, ya que la función recibe datos a través de ella.
  • 39. La palabra reservada const • En contraste el primer parámetro dest de strcmpy es el área de destino, la cual se sobrescribirá y, por consiguiente, no se debe utilizar const para ello. En este caso, el parámetro correspondiente se denomina parámetro de salida, ya que los datos se escriben en el área destino.
  • 40. Arrays y Cadenas como parámetros de funciones • Los arrays y cadenas se pueden pasar solo por referencia, no por valor. En la función, las referencias a los elementos individuales se hacen por indirección de la dirección objeto.
  • 41. Arrays y Cadenas como parámetros de funciones • Considérese el programa C++ PASARRAY.CPP, que implementa una función Longitud( ) que calcula la longitud de una cadena terminada en nulo. El parámetro cad se declara como un array de caracteres de tamaño desconocido. • Este ejemplo es un caso que muestra el paso de un array por valor, método no recomendado.
  • 42. Arrays y Cadenas como parámetros de funciones
  • 43. Arrays y Cadenas como parámetros de funciones
  • 44. Arrays y Cadenas como parámetros de funciones • El programa principal contiene el código para la dirección de la constante de cadena a la función Longitud ( ). El cuerpo bucle while dentro de la función cuenta con los caracteres no nulos y termina cuando se encuentra el byte nulo al final de la cadena.
  • 45. Uso del operador de referencia para tipos array • Otro método de escribir la función Longitud ( ) es utilizar el operador de referencia & C++. Cuando se utiliza este operador, se pasa por el parámetro por referencia.
  • 46. Uso del operador de referencia para tipos array • Se puede dar un nombre nuevo a cualquier tipo de datos mediante typedef. • La sintaxis es typedef declaración; • donde declaración tiene la forma de una declaración de variable, sólo que se está definiendo un tipo de datos. • typedef long pareja [2];
  • 47. Uso del operador de referencia para tipos array • define un tipo pareja que se puede usar en declaraciones de variables: • pareja p; • es equivalente a • long p [2];
  • 48. Uso del operador de referencia para tipos array
  • 49. Uso del operador de referencia para tipos array
  • 50. Uso de punteros para pasar una cadena • Los punteros se pueden utilizar para pasar arrays a funciones:
  • 51. Uso de punteros para pasar una cadena
  • 52. Uso de punteros para pasar una cadena • Observe que en las declaraciones de parámetros ningún array esta definido sino punteros tipo char. En la línea: • *dest++ = *fuente++; • Los punteros se utilizan para acceder a las cadenas fuente y destino, respectivamente. En la llamada a la función extraer se utiliza el operador & para obtener la dirección de las cadenas fuente y destino.
  • 53. Asignación de Cadenas • C++ soporta dos métodos para asignar cadenas. Uno de ellos se ha visto cuando se inicializan las variables de cadena. La sintaxis utilizada era
  • 54. Ejemplo • C++ soporta dos métodos para asignar cadenas. Uno de ellos se ha visto cuando se inicializan las variables de cadena. La sintaxis utilizada era
  • 55. Ejemplo • El segundo método para asignación de una cadena a otra es utilizar la función strcpy. La función strcpy copia los caracteres de la cadena fuente a la carpeta destino. La funcione supone que la cadena destino tiene espacio suficiente para contener toda la cadena fuente. El prototipo de función es:
  • 57. Ejemplo • La función strcpy( ) copia “Cadena a copiar” en la cadena nombre y añade un carácter nulo al final de la cadena resultante. El siguiente programa muestra una aplicación de strcpy ( ).