Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Operatori di stream parametrici
Forum - C/C++ - Operatori di stream parametrici

Avatar
Pitagora (Member)
Expert


Messaggi: 367
Iscritto: 12/06/2010

Segnala al moderatore
Postato alle 17:06
Sabato, 03/09/2011
Salve, come posso creare operatori di stream parametrici?

ad esempio:

Codice sorgente - presumibilmente Plain Text

  1. std::cout << pause( " premere invio per continuare ..." );


PM
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Up
1
Down
V
Segnala al moderatore
Postato alle 17:50
Sabato, 03/09/2011
non credo che la cosa si possa fare in questo modo, se ci pensi un secondo capirai che è un controsenso la riga che hai scritto :)

PM
Avatar
lumo (Member)
Expert


Messaggi: 449
Iscritto: 18/04/2010

Up
1
Down
V
Segnala al moderatore
Postato alle 18:40
Domenica, 04/09/2011
Toericamente puoi fare una cosa del genere, anche se non ha molto senso...

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <string>
  3.  
  4. using namespace std;
  5.  
  6. namespace Utils
  7. {
  8.   struct Pauser
  9.   {
  10.     Pauser operator () ( const string& msg )
  11.     {
  12.         cout << msg;
  13.         return *this;
  14.     }
  15.   } pause;
  16. }
  17.  
  18. istream& operator >> ( istream& in, Utils::Pauser )
  19. {
  20.     in.sync();
  21.     in.get();
  22. }
  23.  
  24. int main()
  25. {
  26.     using Utils::pause;
  27.  
  28.     cin >> pause("Enter a key..");
  29.     cin >> pause; // no message
  30.     return 0;
  31. }



E' molto meglio scrivere una funzione pause e usare quella, perchè tanto non c'è bisogno di specificare lo stream su cui va a leggere/scrivere.

non ha senso XD - HeDo - 04/09/11 19:30
Appunto, è quello che ho detto XD, ho messo il codice solo per mostrare come fare un manipolatore parametrico nel caso ce ne fosse bisogno... questo non è uno di quei casi - lumo - 04/09/11 19:37
già, molto meglio una funzione: pause(":...:"); Grazie ^^ - Pitagora - 10/09/11 14:30
PM