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++ - Operatore di output
Forum - C/C++ - Operatore di output

Avatar
pigattol (Normal User)
Newbie


Messaggi: 1
Iscritto: 16/07/2010

Segnala al moderatore
Postato alle 12:46
Venerdì, 16/07/2010
Ciao a tutti! Per un progetto a cui sto lavorando devo scrivere un operatore di output per
una classe "Casella" che in sostanza consiste in un quadrato di asterischi.

Il problema è che queste caselle devono essere stampate fianco a fianco e l'operatore che ho scritto, dovendo mandare a capo con endl, non me lo permette.
Sto cercando un metodo per riportare indietro, in un punto preciso, lo stream di output, in modo da poter stampare le caselle una fianco all'altra.
Ho provato con tellp() e seekp() ma il risultato non è stato quello sperato.

Se può essere utile posto il codice dell'operatore:

Codice sorgente - presumibilmente C/C++

  1. ostream& operator<<( ostream& os, Casella& cas ) {
  2.         if ( cas._colore == 1 ) {
  3.        
  4.                 os << "***********" << "\n";
  5.                 os << "*          *" << "\n";
  6.                 if (cas._occupazione == 1){
  7.                 os << "*   " << cas._pezzo << "   *" << "\n";
  8.                 }
  9.                 else{
  10.                 os << "*          *" << "\n";
  11.                 }
  12.                 os << "*          *" << "\n";
  13.                 os << "***********";
  14.          }
  15. }


Ultima modifica effettuata da pigattol il 16/07/2010 alle 12:47
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 13:40
Venerdì, 16/07/2010

purtroppo non credo riesci a farlo con il solo operatore di output :(
hai bisogno di una visione collettiva di cosa vuoi stampare, la console stampa solo di riga in riga ed esiste un'api per far tornare il puntatore in una casella precisa

http://msdn.microsoft.com/en-us/library/ms686025(v=VS.85). ...
ma rompe la compatibilità con linux in quanto è un'api win32.

se sviluppi sotto windows qui c'è la reference della console in fatto di api
http://msdn.microsoft.com/en-us/library/ms682073(v=VS.85). ...

PM Quote