2012-05-11 23 views
9

यह लूप में रखी स्ट्रिंग मुद्रित नहीं करता है। कार्यक्रम जी ++ की मदद से लिखा गया था, sys/types.h हेडर फाइल के साथ शामिलमेरा cout आउटपुट तुरंत क्यों नहीं दिखाई देता है?

for(int i=0;i<9;i++) 
{ 
    cout<<"||"; 
    sleep(1); 
} 
+0

'cout << "||" << endl; ' –

+0

क्या आप त्रुटि पोस्ट कर सकते हैं? –

उत्तर

7

क्या आप की संभावना यहाँ देख रहे हैं उत्पादन का एक प्रभाव बफ़र की जा रही है। आम तौर पर आउटपुट वास्तव में std::endl तक लिखा नहीं जाएगा जब तक उपयोग नहीं किया जाता है।

for(int i=0;i<9;i++) 
{ 
    // Flushes and adds a newline 
    cout<< "||" << endl; 
    sleep(1); 
} 

हुड std::endl के तहत एक नई पंक्ति चरित्र जोड़ रहा है और उसके बाद std::flush का उपयोग कर कंसोल के लिए उत्पादन के लिए मजबूर करने। आप सीधे std::flush का उपयोग एक ही प्रभाव

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

शायद आपको सटीक होना चाहिए कि अंत में दोनों लाइन का अंत जोड़ें और फ्लश कॉल करें। एक '\ n' अकेले ही पर्याप्त समय होना चाहिए। – Klaim

+1

* आम तौर पर आउटपुट वास्तव में लिखा नहीं जाएगा ** जब तक कि एक नई लाइन मुद्रित नहीं होती **। * .. यह सही नहीं है। एक नई लाइन उस गारंटी नहीं देती है। ध्यान दें कि 'std :: endl' बफर ** और ** में एक नई लाइन जोड़ता है, फिर इसे फ्लश करें। – Nawaz

+1

कारण std :: endl काम करता है यह लाइन सामग्री (\ n के लिए * nix, \ r \ n विंडोज़ के लिए) और एक std :: flush का अंत जोड़ता है। मुख्य भाग std :: flush है, लेकिन std :: endl निश्चित रूप से काम करता है। –

13

आप अपने उत्पादन निस्तब्धता नहीं कर रहे हैं पाने के लिए कर सकते हैं।

std::cout << "||" << std::flush; 
संबंधित मुद्दे