¡Nuevo!  por fin disponible la versión 5 de OrganiZATOR
Descubre un nuevo concepto en el manejo de la información.
La mejor ayuda para sobrevivir en la moderna jungla de datos la tienes aquí.

Curso C++

[Home]  [Inicio]  [Índice]


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;
}