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.