Vimos que para guardar caracteres de texto (letras) usábamos datos de tipo char. Cuando se
requieren guardar palabras o frases, se vuelve imposible hacerlo de esta
manera. (Imaginemos sólo la complicación para guardar un listado de nombres:
Habría que generar una variable para cada letra, pero a su vez cada nombre
podría contener una cantidad distinta de letras, etc.)
Para guardar frases de texto, en C++ se pueden utilizar los
datos de tipo string., también llamados cadenas o cadenas de caracteres.
#include <iostream>
using
namespace std;
int
main()
{
string uno;
uno = "¡Hola Mundo!";
cout << uno << endl;
}
En este ejemplo, definimos una variable(*) de tipo string (la
variable uno), le asignamos un valor ("¡Hola Mundo!"), y la mostramos por
pantalla con la instrucción cout.
Análogamente, se puede ingresar un valor desde teclado con la
instrucción cin:
cin >> uno;
Pero la instrucción cin considera el espacio en blanco como
un separador de variables, por lo que la variable ingresada sólo podrá tener
una palabra: Lo que se ingrese luego del espacio en blanco, será considerado
otra variable diferente.
Como ejemplo, veamos el siguiente programa:
#include <iostream>
using
namespace std;
int
main()
{
string nombre;
cout <<
"Ingrese su nombre:"<< endl;
cin >>
nombre;
cout <<
"¡Hola "<< nombre <<"!" << endl;
}
Si se ingresa como nombre “María”, se obtiene la respuesta
esperada “¡Hola María!”. En cambio, si se ingresa como nombre “Juan Pablo”, la
respuesta obtenida será “¡Hola Juan!”
Para evitar este problema, se utiliza la instrucción
getline:
#include <iostream>
using namespace std;
int main()
{
string nombre;
cout <<
"Ingrese su nombre:"<< endl;
getline (cin,
nombre);
cout <<
"¡Hola "<< nombre <<"!" << endl;
}
Esta instrucción sólo acepta el fin de línea (”Enter”) como
separador de variables, así que toda la línea que se ingrese será interpretada
como una sola variable de tipo string.
También es posible realizar comparaciones con datos de tipo
string:
#include <iostream>
using namespace std;
int main()
{
string clave,
codigo;
codigo =
"qwertyuiop";
do
{
cout <<
"Ingrese su contraseña:";
cin >>
clave;
}
while (clave !=
codigo);
cout <<
"Bienvenido!";
}
Este programa seguirá repitiendo el ciclo do…while hasta que
la clave ingresada por el usuario sea igual al código escrito por el
programador.
Todos los operadores lógicos son válidos con variables de
tipo string. También es posible usar la comparación para ver si un string es menor o mayor a otro. Un string se considera menor a otro si alfabéticamente es anterior. (O sea, si está antes en el diccionario.)
En el siguiente programa:
El usuario debe ingresar palabras intentando adivinar la palabra secreta "elefante". El programa responderá a cada intento si la palabra secreta es menor (anterior) o mayor (posterior) e irá contando la cantidad de intentos realizados.
En el siguiente programa:
#include
<iostream>
using
namespace std;
int main()
{
string secreto = "elefante";
string intento;
int i=0;
do
{
cout<<"Realice un
intento:";
cin>>intento;
i++;
if
(secreto<intento)
cout
<<"La palabra secreta es anterior."<<endl;
else
if
(secreto>intento)
cout<<"La palabra secreta es posterior."<<endl;
}
while(secreto!=intento);
cout
<<"Felicitaciones. Acertaste en "<<i<<"
intentos.";
}
El usuario debe ingresar palabras intentando adivinar la palabra secreta "elefante". El programa responderá a cada intento si la palabra secreta es menor (anterior) o mayor (posterior) e irá contando la cantidad de intentos realizados.
(*) Estrictamente hablando, los strings no son variables ni
datos, sino que son objetos. Un objeto es una variable que tiene además de
datos, tiene métodos (funciones) que le son propios y trabajan sobre esos
datos. Hay todo un paradigma de programación que trabaja con ellos, la
Programación Orientada a Objetos (POO) y su explicación y desarrollo ocuparía
un curso mucho más extenso que éste. Por ello, la simplificación de
considerarlos simplemente como variables.
No hay comentarios:
Publicar un comentario