2014-11-29 32 views
7

kod basittirQt Creator neden cout.flush() çağrısından sonra yeni satır ekliyor?

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

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

ederken .pro dosyasında çıktı Qt Creator "uygulama çıkışı" (varsayılan olarak kaynak kodu yerine altında yer) girerse

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

, her "1 "yeni bir satırdan başlar.

Eğer g ++ kullanarak Ubuntu Terminalinde ayrı * .cpp dosyası derler ve çalıştırırsam, düzgün bir şekilde çalışır.

Qt Creator'da yeni bir proje oluşturursam ve çıktı Qt Creator konsoluna (siyah arka plana sahip yeni pencere) girerse, düzgün bir şekilde çalışır.

Peki, neden ilk durumda cout.flush() yeni bir satır neden olur?

cevap

6

Görünüşe göre, bu onlar yakın zamanda çözmek düşünmüyorsanız bir Qt Creator hata olduğunu (2015 Nisan ayında devlet olduğunu en azından). Qt Creator 3.5.1'i (Qt 5.5.1) test ettim ve hata hala var, ancak yeni hat std::cout.flush() numaralı çağrıdan sonra std::cout << arayarak veya std::flush manipülatörüne çağrılarak yazdırılıyor.

Neyse, bu hata için JIRA bilet burada bulunabilir:

Flushing application output automatically starts a new line