miércoles, 27 de febrero de 2008

Cómo implementar la funcion getch(), readkey, getchar() para C++

El siguiente post explica como implementar una función getch() al estilo getchar() de Pascal o getche() de conio.h.

Creamos un fichero al que yo llamé Stflib.h ( debido a que incluyo otras funciones como ToString, Gotoxy, que puedes ver en este blog en el menú).

#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <cstdlib>
 
using namespace std;

static bool isGenerated = false;

const string readCharScript[7] = {"#!/bin/sh" ,
"tput smso",
"tput rmso",
"oldstty=`stty -g`",
"stty -icanon min 1 time 0",
"dd bs=1 count=1 of=output >/dev/null 2>&1",
"stty \"$oldstty\"" };

void GenereFile() {
ofstream outputFile( ".readone", fstream::out );
for ( int i = 0; i < 7; i++ ) outputFile << readCharScript[i] << endl; system("chmod +x .readone"); isGenerated = true; } char getch() { if (!isGenerated) GenereFile(); system("./.readone"); char ch; ifstream file("output", fstream::in); file >> ch;
file.close();
return ch;
}



En otro fichero, al que llamé getch.C, ponemos:


#include "Stflib.h"

using namespace std;

int main() {
char ch = getch();
cout << endl << "El caracter es: " << ch << endl; return 0; }

1 comentario:

Escriba su comentario (no necesita registrarse).