2014-11-29 4 views
7

कोड सरल हैक्यूटी निर्माता क्यों 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); 
    } 
} 

जबकि .pro फ़ाइल में

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

उत्पादन क्यूटी निर्माता "आवेदन उत्पादन" (डिफ़ॉल्ट रूप से स्रोत कोड जगह के तहत जगह) में चला जाता है, तो हर "1 "एक नई लाइन से शुरू होता है।

यदि मैं g ++ का उपयोग करते हुए उबंटू टर्मिनल में अलग * .cpp फ़ाइल को संकलित और निष्पादित करता हूं, तो यह उचित तरीके से काम करता है।

यदि मैं क्यूटी निर्माता में एक नई परियोजना बनाता हूं और आउटपुट क्यूटी निर्माता कंसोल (काला पृष्ठभूमि वाली नई विंडो) में जाता है, तो यह उचित तरीके से काम करता है।

ठीक है, क्यों cout.flush() पहले मामले में एक नई लाइन का कारण बनता है?

उत्तर

6

जाहिर है, यह एक क्यूटी निर्माता बग कि वे जल्द ही किसी भी समय को हल करने की योजना नहीं है (कम से कम है कि अप्रैल 2015 में राज्य था पर)। मैंने क्यूटी निर्माता 3.5.1 (क्यूटी 5.5.1) का परीक्षण किया है और बग अभी भी मौजूद है, भले ही नई लाइन केवल std::cout.flush() को std::flush मैनिपुलेटर को std::cout << कॉल पर कॉल या संलग्न करने के बाद मुद्रित हो।

फिर भी, इस बग के लिए JIRA टिकट यहां पाया जा सकता:

Flushing application output automatically starts a new line

संबंधित मुद्दे