9.2 Datos por teclado
Introducir
una palabra: se acepta un imput por el teclado hasta que
se pulsa Intro (0x0D). La cadena recogida termina en el primer espacio (0x20).
#include <iostream.h>
#include <string>
int main() { // ==========
cout << "Introduzca una palabra (Intro para terminar):"
<< endl;
string s;
cin >> s;
cout << "Palabra introducida: " << s <<
endl;
}
Introducir
una cadena alfanumérica de cualquier longitud: se
acepta un imput por el teclado hasta que se pulsa Intro (0x0D).
#include <iostream.h>
#include <string>
int main() { // ================
cout << "Introduzca el texto (Intro para terminar):"
<< endl;
string s;
getline(cin, s);
cout << "Frase introducida: \n" << s <<
endl;
}
Introducir
una cantidad numérica: se acepta un número por teclado; ser termina con Intro (0x0D).
#include <iostream.h>
int main() { // ================
cout << "Introduzca un numero+Intro: " << endl;
int x;
cin >> x;
cout << "Numero introducido: " << x <<
endl;
}
Esperar
hasta que se pulse cualquie tecla (BC++, solo Windows 32):
#include <iostream.h>
#include <conio.h>
...
cout << "Pulse una tecla para continuar";
for( ; ; ) if(getch()!=0) break;
La función equivalente en MSVC es: _getch(void)
Esperar
hasta que se pulse una tecla específica - ESC en el ejemplo - (BC++, solo
Windows 32):
#include <iostream.h>
#include <conio.h>
...
cout << "Pulse ESC para continuar";
while ( getch() != '\x1B' );
Esperar
hasta que se pulse Intro:
#include <iostream.h>
#include <stdio.h>
...
cout << "Pulse Intro para continuar";
getchar();
Esperar
la pulsación de una tecla; analizar su valor ASCII y su composición de bits (BC++, solo Windows 32)
#include <iostream.h>
#include <conio.h>
void mapa(const signed int);
int main() { // ====================
cout << "Introduzca un caracter (salir con ESC) ";
int val, extended;
while ( true ) {
val = getch();
if (val == '\x1B') break;
if (val == 0 ) {
extended = getch();
if (extended) cout << "El caracter
extendido: ";
else
cout << "El caracter no extendido: ";
cout << val << " + "
<< extended << endl;
mapa(extended);
}
else {
cout << "\r\nASCII introducido:
" << val << endl;
mapa(val);
}
}
}
void mapa (const signed int ch)
{ // escribe el patron de bits
cout << "Mapa de bits = ";
for(int i = 31; i >= 0; i--) cout << ((ch & (1 <<
i)) ? "1" : "0");
cout << "\r\n\nNuevo caracter: ";
}
Salida después de pulsar sucesivamente las teclas 'a', 'b' y 'F1':
Introduzca un caracter (salir con ESC)
ASCII introducido: 97
Mapa de bits = 00000000000000000000000001100001
Nuevo caracter:
ASCII introducido: 98
Mapa de bits = 00000000000000000000000001100010
Nuevo caracter: El caracter extendido: 0 + 59
Mapa de bits = 00000000000000000000000000111011
Nota: La función getch() de BC++ funciona adecuadamente
con algunos de los caracteres extendidos, por ejemplo, las teclas de función,
pero no con otros, como avance y retroceso de página o flechas de movimiento
de cursor. En cambio, la función _getch() de MSVC
si identifica correctamente todos los caracteres, aunque hay que hacer ligeros
cambios en el código.
Versión para MSVC (se han terminado las sentencias cout y se ha modificado la condición señalada):
#include <iostream.h>
#include <conio.h>
void mapa(const signed int);
int main() { // ====================
cout << "Introduzca un caracter (salir con ESC) "
<< endl;
int val, extended;
while ( true ) {
val = _getch();
if (val == '\x1B') break;
if (val == 0 || val == 0xE0) { //
cambiado!!
extended = _getch();
if (extended) cout << "El caracter
extendido: ";
else cout <<
"El caracter no extendido: ";
cout << val << " + "
<< extended << endl;
mapa(extended);
}
else {
cout << "\r\nASCII introducido:
" << val << endl;
mapa(val);
}
}
}
void mapa (const signed int ch) {
cout << "Mapa de bits = ";
for(int i = 31; i >= 0; i--) cout << ((ch & (1 <<
i)) ? "1" : "0");
cout << "\r\n\nNuevo caracter: " << endl;
}