Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [C++] endl; '\n'

  1. #1
    Utente di HTML.it L'avatar di mico
    Registrato dal
    Jul 2005
    Messaggi
    140

    [C++] endl; '\n'

    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?

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    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.

  3. #3
    Utente di HTML.it L'avatar di mico
    Registrato dal
    Jul 2005
    Messaggi
    140
    Per buffer di output si intende lo stream cout ?

  4. #4
    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.

  5. #5
    Utente di HTML.it L'avatar di mico
    Registrato dal
    Jul 2005
    Messaggi
    140
    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!

  6. #6
    Originariamente inviato da mico
    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.

  7. #7
    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.

  8. #8
    Utente di HTML.it L'avatar di mico
    Registrato dal
    Jul 2005
    Messaggi
    140
    Grazie 1000 ...

  9. #9
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.