2015-03-03 9 views
5

मैं जंग में एक स्टेटस इंडिकेटर बनाने की कोशिश कर रहा हूं जो stdout को प्रिंट करता है। अन्य भाषाओं में, मैंने एक ऐसा फ़ंक्शन उपयोग किया है जो दूसरों को छेड़छाड़ करते हुए stdout की वर्तमान पंक्ति को साफ़ करता है। मुझे जंग के बराबर नहीं लग रहा है। क्या कोई है? यहाँ मैंमैं stdout की वर्तमान पंक्ति को कैसे साफ़ करूं?

for i in 0..1000 { 
    stdio::print(format!("{}", i).as_slice)); 
    stdio::clear(); 
} 
+0

आप किस मंच पर हैं? और अन्य भाषाओं में संबंधित कार्य क्या है जिसके बारे में आप सोच रहे हैं? –

उत्तर

5

एक एएनएसआई टर्मिनल (विंडोज़ पर कमांड प्रॉम्प्ट को छोड़कर लगभग सबकुछ) पर, \r कर्सर को वर्तमान लाइन की शुरुआत में वापस कर देगा, जिससे आप इसके ऊपर कुछ और लिख सकेंगे (नई सामग्री या व्हाइटस्पेस जो आप को मिटाने के लिए पहले से ही लिखा है)।

print!("\r") 

मानक लाइब्रेरी में प्लेटफार्म-तटस्थ तरीके से ऐसा करने के लिए कुछ भी उपलब्ध नहीं है।

0

बैकस्पेस के लिए ASCII कोड का उपयोग के लिए क्या देख रहा हूँ का एक छोटा सा उदाहरण है, उदाहरण के लिए एक विकल्प है,:

print!("12345"); 
print!("{}", (8u8 as char)); 

यह "1234" outputting 5 के बाद खत्म हो जाएगा बैकस्पेस कैरेक्टर (एएससीआई कोड 8) प्रिंट करने के परिणामस्वरूप हटा दिया गया। आश्चर्यजनक रूप से, जंग एक वैध चरित्र भागने के रूप में \ b पहचान नहीं है।

+1

'\ u {8} 'आपको बैकस्पेस मिल जाता है। वह जंग '\ b' को पहचान नहीं पाता है क्योंकि एक वैध भाग्य बिल्कुल अजीब नहीं है; यह बिल्कुल मानक भाग्य में से एक नहीं है, हालांकि यह आम है। –

2

cli एक टोकरी (docs) है जो इस समस्या को हल करने के लिए बहुत अच्छी तरह से काम करता है। यह प्रगति सलाखों और स्टाइल संकेतों जैसी कुछ अन्य आम उपहारों के साथ आता है।

cli::clear वह कार्य होना चाहिए जो आप चाहते हैं।

दोहराया की तरह कुछ का उपयोग कर के साथ मुख्य कठिनाई:

println!("\r"); 

जब तक प्रश्न में ओएस समर्थित है होना चाहिए स्पष्ट है कि इस पार ओएस संगत CLI का उपयोग करते समय नहीं होगा ::। cli क्रेट का उपयोग करने के बारे में दूसरी अच्छी बात यह है कि यह एक उच्च स्तर का अमूर्त है जो आपके वास्तविक अर्थ को स्पष्ट तरीके से व्यक्त करता है।

आप टर्मिनल को साफ़ करना चाहते हैं।

आप बार-बार कैरिज रिटर्न पाने की कोशिश नहीं कर रहे हैं।

इसी तरह की चीजों के लिए यहां अन्य दिनचर्या हैं। अर्थात् प्रगति पट्टी जो समस्या है जिसे आप हल करने की कोशिश कर रहे हैं।

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