2014-11-29 15 views
7

Der Code ist einfachWarum fügt Qt Creator nach dem Aufruf von cout.flush() eine neue Zeile hinzu?

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

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

während in .proDatei

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

Wenn die Ausgabe in Qt Creator "Anwendungsausgabe" geht (die unter Quellcode Ort in der Standardeinstellung), „alle 1 "beginnt mit einer neuen Zeile.

Wenn ich separate * .cpp-Datei in Ubuntu Terminal mit g ++ kompilieren und ausführen, funktioniert es richtig.

Wenn ich ein neues Projekt in Qt Creator erzeuge und die Ausgabe in die Qt Creator-Konsole (neues Fenster mit schwarzem Hintergrund) geht, funktioniert es ordnungsgemäß.

Nun, warum verursacht cout.flush() im ersten Fall einen Zeilenumbruch?

Antwort

6

Offenbar ist dies ein Qt Creator Fehler, dass sie nicht planen, in absehbarer Zeit zu lösen (zumindest, dass der Staat im April 2015 war). Ich habe Qt Creator 3.5.1 (Qt 5.5.1) getestet und der Fehler ist immer noch vorhanden, obwohl die neue Zeile erst nach dem ersten Aufruf std::cout.flush() oder std::flush Manipulator an std::cout << Aufruf gedruckt wird.

Anyways, JIRA Ticket für diesen Fehler ist hier zu finden:

Flushing application output automatically starts a new line