1. Fundamentos de Informática Prof. Marlene I ciclo 2012
Caracteres
char: permite guardar una sola letra, carácter o símbolo especial.
Cadena de Caracteres
Las variables de tipo string representan cadenas de caracteres, o sea son variables que
permiten almacenar texto, símbolos, números.
Se debe utilizar el archivo de encabezado: #include<string>
string pertenece al espacio de nombres std.
El valor inicial de un objeto string es una cadena vacía o sea no contiene caracteres.
Declarar una variable string
string nombre;
string pais;
Asignar un valor a una variable de tipo string
Cuando se declara una variable string, se puede inicializar de una vez ejemplo:
string pais = "Costa Rica";
string pais ("Costa Rica");
o realizar la asignación posteriormente, ejemplo:
string pais;
pais = "Costa Rica";
La asignación se puede hacer mediante teclado, a través del objeto de flujo de entrada cin.
cout<<"Digite su nombre ";
cin>> nombre;
La entrada desde el dispositivo de entrada (teclado), se delimita por caracteres de espacio en
blanco. Por lo tanto si en la solicitud anterior usted digito su nombre y apellido lee caracteres
hasta encontrar un carácter de espacio en blanco o un indicador de fin de archivo, lo que el
usuario digite después de presionar la tecla de espacio, no se almacena.
getline
Para obtener cadenas de caracteres con espacios, ejemplo su nombre y apellidos, se utiliza la
instrucción:
getline(cin, nombre); // esta instrucción en lugar de cin>>nombre;
NOTA: al utilizar el flujo de entrada cin y luego utilizar getline, puede producir problemas
ejemplo:
1
2. Fundamentos de Informática Prof. Marlene I ciclo 2012
cout<<"n Digite su edad";
cin>> edad;
cout<<"n Digite su nombre";
getline(cin, nombre);
Cuando el compilar llega a la instrucción cin hará un paro para poder ingresar datos a través del
teclado, luego se presiona la tecla Enter para finalizar. Aquí se produce el problema ya que No
se hará un alto en la instrucción getline como debería suceder, ya que getline capta el último
carácter almacenado en el buffer de la memoria (null o símbolo especial 0). Para evitar este
error se utiliza la función miembro llamada ignore(), antes del getline.
cin.ignore(); Esto evitará que getline capte el último carácter especial (enter).
Note: no siempre es necesario escribir la instrucción cin.ignore();antes del getline, solo
cuando lo antecede una entrada cin.
cin.getline
También puede utilizar la instrucción cin.getline para la lectura de cadenas con variables tipo
char.
cin.getline( cadena , tamaño , carácter)
- cadena: nombre de la variable donde se almacenará la cadena.
- tamaño: nº máximo de caracteres que se leerán. El tamaño debe ser como máximo la longitud
que aparece en la declaración de la cadena.
- carácter: se leerán caracteres hasta que se encuentre el carácter especificado en este espacio.
Si no se especifica un carácter, el compilador supone que es ‘n’.
char nombre[15];
…
cin.getline (nombre, 15); /* con esta sintaxis, se debe anteponer la instrucción
cin.ignore(); cuando lo antecede una entrada cin.*/
cin.getline (nombre, 15, 'n');
con cin.ignore(); Sin cin.ignore();
Caracter nulo de terminación
cin.getline se utiliza con el archivo de encabezado string
2
3. Fundamentos de Informática Prof. Marlene I ciclo 2012
setw
Al leer una cadena y colocarla en un arreglo mediante la extracción de flujo con cin, se puede
utilizar el manipulador de flujo setw para garantizar que la cadena almacenada no exceda el
tamaño del arreglo. Ejemplo
char palabra [10];
cin>> setw(10) >> palabra;
cin debe leer un máximo de 9 caracteres, y almacenar el carácter nulo de terminación en la
última ubicación.
De no especificarse el setw( ), se mostraran todos los caracteres digitados si exceden a 10.
setw se utiliza con el archivo de encabezado iomanip.
setw pertenece al espacio de nombres std.
Mostrar una cadena de caracteres
A pesar de estar compuestas por caracteres, las cadenas, poseen una dualidad que permite un
tratamiento como si fuera una “entidad atómica” o, mostrando carácter a carácter o sea
accesando cada una de sus celdas por separado.
cout << "Su nombre es " <<nombre;
longitud de una cadena
La longitud de una cadena se refiere al número de caracteres que la componen incluyendo los
espacios en blanco.
La longitud se obtiene mediante la función miembro length o la función miembro size.
El operador subíndice [ ], se utilizan con variables string y char para acceder al carácter de forma
individual y modificarlo nombre[3]
El primer subíndice 0 y el ultimo subíndice length()-1
0 1 2
a n a
Sintaxis: variable . length ( )
cout<<”n la longitud de su nombre es”<< nombre.length();
3
4. Fundamentos de Informática Prof. Marlene I ciclo 2012
Desplegar carácter a carácter la cadena almacenada:
void main(){
string nombre;
int i;
cout<<"n Digite su nombre";
cin>> nombre;
for(i=0;i<nombre.length();i++)
cout<<"n"<<nombre[i];
system ("pause")
}
Conversión de cadenas a Mayúsculas o minúsculas
La función islower determina si su argumento es una letra minúscula.
toupper convierte una letra minúscula a mayúscula.
La función isupper determina si su argumento es una letra mayúscula.
tolower convierte una letra mayúscula en minúscula.
Estas funciones se utilizan con el archivo de encabezado #include <ctype.h>
void main()
{
string caracter;
int i, lon;
cout<<"n Ingrese su letra, palabra o frase a convertir"<< endl;
getline(cin,caracter);
lon=caracter.length();
for(i=0; i<lon; i++){
if (islower(caracter[i])){
caracter [i]= toupper(caracter[i]);
cout<<caracter[i];
}
else{
caracter[i]= tolower(caracter[i]);
cout<<caracter[i];
}
}
system ("pause");
}
4
5. Fundamentos de Informática Prof. Marlene I ciclo 2012
Ejercicios:
1. Realizar un programa que solicite el nombre y apellido al usuario y lo almacene en una
variable, despliegue el contenido de la variable, carácter x carácter en forma vertical,
luego imprima en pantalla la frase ”su nombre en forma inversa” y despliegue a
continuación la hilera en forma inversa carácter x carácter horizontalmente.
2. Realizar un programa que solicite el nombre al usuario y lo almacene en una variable,
luego despliegue la longitud del nombre.
5