Ho creato una classe "Console", che scrive e legge sullo stdin e stout e non faccio uso delle librerie standard del C++ (quindi è una classe windows-dipendente), fornendo alcuni scarni metodi per un minimo di I/O. Invero faccio uso di una libreria standard del c/c++ (stdarg) per consentire alla funzione printf (scritta da me) di ricevere un numero indefinito di parametri.
Header della classe Console:
class Console
{
public:
Console();
~Console();
void ClrEol();
void ClrScr();
void cursorbig();
void cursoroff();
void cursoron();
void Delay(DWORD);
bool GotoXY(int xx,int yy);
bool KeyPressed();
char ReadKey();
void Sound(DWORD,DWORD);
void TextBackground(DWORD val);
void TextColor(DWORD val);
int WhereX() { return coord.X; }
int WhereY() { return coord.Y; }
DWORD GetTextColor() { return tc; }
DWORD GetTextBackground() { return bc; }
HANDLE GetHandle(){return handle;}
DWORD printf(const char *lpBuffer,...);
DWORD printc(char c);
void ReadLn(int&);
void ReadLn(char*);
void saveScreen();
void restoreScreen();
protected:
private:
DWORD tc;
DWORD bc;
COORD coord;
HANDLE handle;
LPSTR charbuf;
LPWORD attrbuf;
bool bufpieno;
void Setx(int n){coord.X=n;}
void Sety(int n){coord.Y=n;}
};
Nota bene: libreria fortemente ancorata a Windows, senza il quale non può funzionare.
Qui potete leggere la documentazione, mentre da qui potete scaricare i file sorgente.