Anda di halaman 1dari 23

Strings

Jonathan Avendaño Pérez, Ing, M.Sc.(c)


email: javendanop@ecci.edu.co

Universidad Escuela Colombiana de Carreras Industriales


Bogotá Colombia
Facultad de Ingenierı́a Electrónica

15 de septiembre de 2016

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 1


Introducción

Es un conjunto de elementos que pueden ser letras, números, textos,


etc. Las cadenas de caracteres en C pueden ser definidas como un
array de variables tipo char o una variable tipo string.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 2


Utilización de la clase string:

C++ tiene una clase llamada string, la cual es muy útil para la
manipulación de texto. Esta clase puede utilizarse al incluir el header

#include< string .h >

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 3


Sintaxis

char nombre [tamaño] = ”cadena”;


string str1 = ”cadena”;
Ejemplos:
char nombre1[10] = ’J’, ’U’, ’A’, ’N’;
char nombre2[10] = ”JUAN”;
char nombre3[] = ”JUAN”;
string nombre4 = ”JUAN”;

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 4


La cadena vacı́a
Otra curiosidad de las cadenas de caracteres se refiere a la cadena
vacı́a, , que consta únicamente del carácter nulo. Puesto que los
caracteres posteriores al carácter nulo son ignorados, convertir una
cadena con cualquier valor almacenado a la cadena vacı́a es tan
simple como asignar el carácter nulo a la posición 0 de dicha cadena.
He aquı́ un ejemplo:
char cadena [12] = ”Una frase”;
cadena[0] = ’\0’;

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 5


Ingreso de un string

Mediante la función getline se pueden leer lı́neas de texto que in-


cluyan espacios en blanco, lo que no se puede hacer con el operador
>>, que salta el espacio en blanco.
Sintaxis:

getline(cin,str)

Donde str, es una cadena de caracteres de la clase string.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 6


Concatenación de string

La concatenación es, en general, el acto de unir o enlazar cosas.


Es la operación por la cual dos caracteres se unen para formar una
cadena de caracteres (o string). También se pueden concatenar dos
cadenas de caracteres o un carácter con una cadena para formar una
cadena de mayor tamaño. Algunos ejemplos:

I ’a’ concatenado ’b’ −→ ’ab’


I ’ABCD’ concatenado ’b’ −→ ’ABCDb’
I ’a’ concatenado ’XYZ’ −→ ’aXYZ’
I ’ABCD’ concatenado ’XYZ’ −→ ’ABCDXYZ’

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 7


Concatenación de string en C++

En C++ es posible concatenar caracteres o string. Con la clase string


este proceso se realiza con el operador ‘+’:
Sintaxis:

str1 + str2
str1 + ”ABCD”
Donde str1 y str2 son cadenas de caracteres de la clase string.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 8


Comparación de string en C++

En algunas ocasiones es necesario comparar diferentes cadenas de


caracteres. Con las strings de la clase string este proceso se realiza
igual que con cualquier tipo de variable con el operador de relación:
‘==’. Sintaxis:

str1 == str2
Donde str1 y str2 son cadenas de caracteres de la clase string. Este
operador ”==” devuelve un 1 cuando ambos string son iguales y 0
cuando no.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 9


Determinar el tamaño de un string

En algunas aplicaciones resulta de utilidad determinar el tamaño de


una cadena de caracteres (string), esto puede realizarse en C++ de
la siguiente manera: Sintaxis:

Tam = str1.size();
Donde str1 es una cadena de caracteres de la clase string, y Tam
es una variable tipo entero.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 10


Indexación de string

La indexación de cadenas (string) es el proceso por el cual es posible


indexar y manipular cadenas de caracteres a partir de un ı́ndice. Estas
por tanto tienen un ı́ndice que empieza a partir de 0 y finalizan con la
cantidad de caracteres menos 1 (para ubicar el último carácter). Los
objetos de tipo string tienen métodos para utilizar los ı́ndices y para
avanzar a través de los caracteres con el fin de efectuar y retornar
búsquedas de valores, sub-cadenas y una variedad de operaciones.
LAS CADENAS SON INMUTABLES, LO QUE SIGNIFICA
QUE UN PROGRAMADOR PUEDE BUSCAR ELEMENTOS
Y MODIFICARLOS, PERO NO AGREGAR O ELIMINAR ELE-
MENTOS EN LAS MISMAS.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 11


Indexación de string

strring str1 = ”casco”;

El carácter ‘\0’ es un carácter vacı́o. Para acceder a la posición 0 de


la cadena de caracteres de la anterior figura, se realiza lo siguiente:

str1[0]

La anterior sentencia devuelve el carácter ubicado en el ı́ndice 0.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 12


Indexación de string
Es posible modificar una posición especifica dentro de una cadena
de caracteres.
strring str1 = ”casco”;

str1[0] = ’k’

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 13


string de C vs. string de la clase string (C++).

Hay que diferenciar entre las strings de C, que son de tipo const char
* y las srtrings de la clase string. Ambas son cadenas de caracteres
pero son diferentes objetos y no se pueden procesar igual, por ejmplo:
las strings de C no pueden concatenarse con el operador ‘+’, se debe
utilizar el comando strcat.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 14


string de C vs. string de la clase string (C++).

En ocasiones es necesario convertir una string de la clase string en


una string de la clase C esto puede realizarse mediante la función
c str().
Sintaxis:

str1.c str()

Donde str, es una cadena de caracteres de la clase string.

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 15


Ejemplo 1:

Realizar un programa que solicite ingresar por pantalla los nombres


y apellidos de una persona y luego los muestre por pantalla.
Hint: Recuerde usar la sentencia getline para capturar el string por
pantalla

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 16


Solución

#include <iostream>
#include <string.h>
using namespace std;

int main(){
string nombre;
cout << ”Por favor Ingrese su nombre” << endl;
getline(cin,nombre);
cout << ”Su nombre es: ” << nombre << endl;
return 0;
}

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 17


Ejemplo 2:

Realizar un programa que solicite ingresar por pantalla el nombre de


una persona y luego muestre por pantalla el nombre al revés.
Ejemplo:

jonathan −→ nahtanoj

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 18


Solución

#include <iostream>
#include <string.h>
using namespace std;

int main(){
//Declarar variables
string nombre;
int tam = 0, i = 0;
//Ingresar string
cout << ”Por favor Ingrese su nombre” << endl;
getline(cin,nombre);
//Calcular el tamano del string
tam = nombre.size();
//Procesar el string
cout << ”Su nombre al reves es: ” << endl;
for(i = tam−1;i>=0;i−−){
cout << nombre[i];
}
cout << endl;
return 0;
}

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 19


Ejemplo 3:

Realizar un programa que solicite ingresar una frase cualquiera y


luego reemplace todas las ‘a’ por 1, las ‘e’ por 2, las ‘i’ por 3, las
‘o’ por 4 y las ‘u’ por 5.
Ejemplo:

Murcielago −→ M5rc32l1g4

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 20


Solución

Parte 1:
#include <iostream>
#include <string.h>
using namespace std;
int main(){
string nombre;
int tam = 0, i = 0;
cout << ”Por favor Ingrese su nombre” << endl;
getline(cin,nombre);
tam = nombre.size();

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 21


Solución

Parte 2:
for(i = 0;i<tam;i++){
switch (nombre[i]){
case ’a’:{
nombre[i] = ’1’;
break;
}
case ’e’:{
nombre[i] = ’2’;
break;
}
case ’i’:{
nombre[i] = ’3’;
break;
}

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 22


Solución

Parte 3:
case ’o’:{
nombre[i] = ’4’;
break;
}
case ’u’:{
nombre[i] = ’5’;
break;
}
default:
break;
}
}
cout << nombre << endl;
return 0;
}

Docente: J. Avendaño, Ing, M.Sc(c). Lenguage C 23

Anda mungkin juga menyukai