2014-11-29 35 views
7

Il codice è semplicePerché Qt Creator aggiunge una nuova riga dopo la chiamata a cout.flush()?

#include <iostream> 
#include <unistd.h> 
using namespace std; 

int main() 
{ 
    for(int i = 0; i < 3; ++i) 
    { 
     cout << "1 "; cout.flush(); 
     sleep(1); 
    } 
} 

mentre nel file di .pro

QT += core  
TARGET = ProjectName  
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  
TEMPLATE = app 

Se l'uscita va in Qt Creator "uscita applicazione" (il luogo in luogo del codice sorgente per impostazione predefinita), ogni "1 "parte da una nuova linea.

Se compilo ed eseguo il file * .cpp separato in Ubuntu Terminal usando g ++, funziona in modo corretto.

Se creo un nuovo progetto in Qt Creator e l'output passa alla console Qt Creator (nuova finestra con sfondo nero), funziona in modo corretto.

Bene, perché cout.flush() causa una nuova riga nel primo caso?

risposta

6

A quanto pare, questo è un Qt Creator bug che non si prevede di risolvere in tempi brevi (almeno questo era lo stato nel mese di aprile 2015). Ho testato Qt Creator 3.5.1 (Qt 5.5.1) e il bug esiste ancora, anche se la nuova riga viene stampata solo dopo la prima chiamata std::cout.flush() o il manipolatore di tipo std::flush alla chiamata std::cout <<.

In ogni modo, biglietto JIRA per questo bug può essere trovato qui:

Flushing application output automatically starts a new line