Qual è la differenza tra cout << "Ciao" <<endl ; e cout << "Ciao" << '\n' ; ?
... in entrambi i casi si va a capo dopo aver scritto "Ciao" ma cosa cambia nei due casi?
Qual è la differenza tra cout << "Ciao" <<endl ; e cout << "Ciao" << '\n' ; ?
... in entrambi i casi si va a capo dopo aver scritto "Ciao" ma cosa cambia nei due casi?
Il primo caso ingloba il secondo e chiama
cout.flush();
In pratica forza lo svuotamento del buffer di output.
This code and information is provided "as is" without warranty of any kind, either expressed
or implied, including but not limited to the implied warranties of merchantability and/or
fitness for a particular purpose.
Per buffer di output si intende lo stream cout ?
Si intende il buffer contenuto in cout. Tutti gli stream C++ contengono un buffer di lettura o di scrittura (a seconda del tipo di stream), in maniera tale da leggere/scrivere i dati a blocchi di dimensioni rilevanti invece che a spizzichi e bocconi come richiedono spesso le applicazioni. Nel caso degli stream di output, il buffer raccoglie i dati da scrivere fino ad una certa soglia, oltre la quale effettua la scrittura in un unico colpo. Se su cout può essere desiderabile effettuare il flushing di frequente perché l'utente veda subito quello che il programma vuole visualizzare, tuttavia scrivendo su file conviene non effettuare mai il flushing (salvo casi particolari) per migliorare le performance di scrittura. Scrivendo su file, quindi, è bene evitare endl. Nota che se l'output del programma viene rediretto su file cout di fatto punterà ad un file, per cui se il programma è usato spesso redirezionandone l'output è bene effettuare il flushing solo nei punti "strategici"; tieni conto comunque che cin e cout se non ricordo male sono in una certa misura sincronizzati, per cui quando leggi da cin, cout viene flushato in automatico.
Amaro C++, il gusto pieno dell'undefined behavior.
Grazie per la risposta esauriente!!! Non mi è chiaro cosa intendi per punti "strategici"... ho capito che per la scrittura su file non conviene usare il flushing per motivi di performance.... però non ho capito quali sono quei "punti strategici" in cui è meglio usare il flushing!
tipo le transazioni dei DB. Insomma "flushi" su file solo quando l'informazione che stai scrivendo, nella logica del programma che stai scrivendo, è integra.Originariamente inviato da mico
però non ho capito quali sono quei "punti strategici" in cui è meglio usare il flushing!
Oppure prima di lunghi cicli di elaborazione, per cui è bene che l'utente sia messo al corrente della situazione prima di attaccare con l'elaborazione, durante la quale cout non potrebbe essere flushato.
Amaro C++, il gusto pieno dell'undefined behavior.
Amaro C++, il gusto pieno dell'undefined behavior.