2012-05-21 6 views
15

ठीक है, मैं इतनी सरल बात पूछने के लिए थोड़ा शर्मिंदा हूं लेकिन अभी भी।कमांड लाइन अनुप्रयोग में प्रगति दिखा रहा है

मेरे पास कमांड लाइन उपयोगिता अनुप्रयोग है और उपयोगकर्ता को प्रगति दिखाने की आवश्यकता है।

मैं अदालत में प्रगति लिख सकता है, इस तरह:

std::cout << "10%\n"; 
... 
std::cout << "20%\n"; 
... 
std::cout << "30%\n"; 

... लेकिन एक परिणाम के रूप उपयोगकर्ता देखेंगे:

some line printed before 
10% 
20% 
30% 
... 

... लेकिन क्या मैं सच में जरूरत है कि प्रतिशत है शुरुआत में अपडेट किए गए हैं, इस तरह:

some line printed before 
10% 
... 

... और अद्यतन के बाद:

some line printed before 
20% 
... 

... और दूसरा अद्यतन के बाद:

some line printed before 
30% 
... 

कैसे मुझे लगता है कि लक्ष्य को हासिल करना चाहिए?

+3

हालांकि नीचे दिए गए उत्तरों अच्छे हैं, लेकिन यह सुनिश्चित करना असंभव है कि काम क्या होगा, जब तक कि आप अपने प्रोग्राम में चल रहे ऑपरेटिंग सिस्टम को न बताएं। –

+0

@AmigableClarkKant मुझे लिनक्स (उबंटू) और विंडोज दोनों पर काम करना चाहिए। –

+1

मुझे लगता है कि जोआचिम पिलेबोर्ग का उत्तर इनके लिए ठीक काम करना चाहिए। –

उत्तर

24
इसके बजाय '\n' का उपयोग करने का

, '\r' का उपयोग करें:

std::cout << "\r10%" << std::flush; 

प्रिंट न्यू लाइन ('\n') जब किया।

std::flush का उपयोग करना महत्वपूर्ण है, इसलिए स्ट्रीम सामग्री वास्तव में आउटपुट है।

6

कैरिज रिटर्न का उपयोग करें।

std::cout << "\r10%"; 
std::cout << "\r20%"; 
... 

लाइन की शुरुआत में जाता है।

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