Disponible la nueva versión "donationware" 7.3 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;
}