PDA

Visualizza la versione completa : [C++] pause - cls


kythera
20-07-2012, 11:28
Ciao a tutti,

ho bisogno di ottenere da un programma questa cosa:

system("pause");
system("cls");

evitando il system() se possibile.
Altrimenti se lo uso devo distinguere windows,unix,mac...

Ho provato a creare al posto del pause:

void pausa(void) {
cout << "\nPremere un tasto per continuare...";
cin.clear();
cin.get();
}


ma non funziona come dovrebbe (non fa il cin.get()).
Qualcuno ha idee?

E al posto del clear come potrei fare?


Grazie :)

oregon
20-07-2012, 11:37
Quel codice attende un invio non un tasto ...

Non puoi non usare il system per i comandi DOS ...

kythera
20-07-2012, 12:33
Sì, scusa invio.
Comunque non funziona come dovrebbe.

Mi va bene usare il system, però dovrei sapere come switchare comando in base al sistema operativo.

Scara95
20-07-2012, 12:44
Controlli le specifiche del compilatore, in base al sisema dovrebbe essere definita una costante con define e utilizzi un #ifdef, prova a pulire il buffer...

oregon
20-07-2012, 13:07
Ovviamente non lo fai a runtime ma devi prevedere i controlli con il preprocessore per compilare per il corretto ambiente.

In particolare controlla le costanti predefinite

TARGET_OS_MAC

__linux__

_WIN32
_WIN64

kythera
20-07-2012, 14:09
Mmm... la cosa mi pare abbastanza incasinata.

:dottò:

oregon
20-07-2012, 15:52
Originariamente inviato da kythera
Mmm... la cosa mi pare abbastanza incasinata.

:dottò:

E quindi?

Scara95
20-07-2012, 16:29
Non è affatto incasinata, è come un normale if, solo si scrive in modo diverso e viene valutato in fase di compilazione...

kythera
21-07-2012, 20:53
Originariamente inviato da oregon
E quindi?

E quindi non so come farla?


Originariamente inviato da Scara95
Non è affatto incasinata, è come un normale if, solo si scrive in modo diverso e viene valutato in fase di compilazione...
L' #ifndef ho presente cos'è, non saprei però come dirgli

if (windows) scegli questo comando
else if (unix) scegli quest'altro
else eccecc

Ho cercato qualcosa in internet a riguardo, ma non trovo nulla...

Scara95
21-07-2012, 20:59
#ifdef __unix__
//codice
#elif defined __WIN32
//codice
#elif defined (...)
...
...
#endif

Wikipedia (http://en.wikipedia.org/wiki/C_preprocessor)

Loading