कंसोल प्रोग्राम संकलित करने के बाद कंसोल विंडो चलने के तुरंत बाद बंद हो जाती है। इसे खोलने के लिए सबसे अच्छा अभ्यास क्या है? मैंने Google लोड की खोज की है, मुझे कोडब्लॉक्स पर उपयोग किया जाता है, जहां आपको इसके बारे में चिंता करने की ज़रूरत नहीं है, लेकिन, मैं विजुअल स्टूडियो के साथ थोड़ा और वीएस के साथ गड़बड़ करना चाहता हूं, मेरा कंसोल बंद हो जाता है। इंटरवब्ज़ पर सभी इसे खोलने के कई अलग-अलग तरीके हैं, हालांकि, मैंने पढ़ा है कि उनमें से अधिकतर खराब कोडिंग तकनीकें हैं। हर किसी पसंदीदा विधि क्या है?कंसोल समापन समस्या का मुकाबला करने के लिए सबसे अच्छा अभ्यास क्या है?
उत्तर
cin
निहायत असुरूप लेकिन आसान प्राप्त करने के लिए भुलक्कड़ के लिए है:
{
char c;
std::cin >> c;
}
जब तक आप टाइप एक चरित्र/* * संपादित करें/और एंटर दबाएँ कि विंडो खुली रखती है।
std::cin.get()
खिड़की को बंद कर देगा जब आप एक चरित्र टाइप करेंगे, जो कि आप कितनी आसानी से आदत बन जाते हैं, इस पर निर्भर करता है कि "अरेप्स, मेरी इच्छा है कि मैंने इसे बंद नहीं किया!" दो-कीस्ट्रोक operator>>(istream &)
की तुलना में।
दोनों system("pause")
से भिन्न होते हैं, जिसमें वे आपके द्वारा लिखे गए चरित्र के मूल्य-पहुंच योग्य तरीके से वापस आते हैं, इसलिए, यदि कभी-कभी ऐसा नहीं होता है, तो एक क्लज दूसरे की ओर जाता है, तो आप एक स्विच स्टेटमेंट लिख सकते हैं आपने तुरंत टाइप किया है (उदाहरण के लिए) तुरंत बाहर निकलें, लॉग पर कुछ मान लिखें, इसे फिर से चलाएं, आदि
आपके मुख्य एप्लिकेशन कोड बंद होने के बाद कंसोल से एक कुंजी पढ़ने के लिए कोड में डालना बहुत आम है । केवल पढ़ने के लिए कीस्ट्रोक को फेंक दिया जाता है, लेकिन यह कंसोल खुला रहता है।
यह सुंदर, जरूरी नहीं है - लेकिन मैं अक्सर इसे डीबग परिभाषित करने में लपेटता हूं, इसलिए डिबगिंग के दौरान, कंसोल खुला रहता है। रिलीज के दौरान, मैं आमतौर पर वीएस के अंदर नहीं चल रहा हूं, और जब कमांड लाइन से चलाया जाता है, तो यह अब कोई मुद्दा नहीं है।
मुझे डीबग # डिफाईन विचार पसंद है। ब्रेकपॉइंट से निश्चित रूप से बेहतर है। – AShelly
चूंकि आप हमेशा डीबगर में भागते हैं, main()
से रिटर्न स्टेटमेंट पर ब्रेकपॉइंट सेट करें।
डीबगर आपका सबसे अच्छा दोस्त है, सीखें (और जल्दी सीखें) हर अवसर पर अपने लाभ के लिए इसका उपयोग करें।
जब भी मैं ऐसा करता हूं, मैं लगातार खुद को crt0.c में कदम उठाने लगता हूं, जो वास्तव में कष्टप्रद है। – AShelly
वैकल्पिक रूप से एक छोटे बैच फ़ाइल एक कंसोल में अपने कार्यक्रम चलाएं, जो एक सांत्वना कार्यक्रम चलाने की उम्मीद तरीका होगा ...
, आप कर सकते हैं अपने कार्यक्रम पर अमल करने के लिए होता है कि:
REM batch file to launch program
yourprogram.exe
PAUSE
और PAUSE
cmd.exe आदेश उपयोगकर्ता से किसी भी कुंजी को दबाएगा।
वास्तव में यह वास्तव में काफी आसान है। वीएस में अपनी परियोजना पर राइट क्लिक करें, गुण चुनें। डीबग सेक्शन के तहत आप इसे बाहरी प्रोग्राम शुरू करने के लिए कह सकते हैं। इस मामले में, यह बैच फ़ाइल होगी जो आपके एप्लिकेशन को लॉन्च करेगी। –
मैं जो आपको एक
Press any key to continue . . .
संदेश देता है system("PAUSE");
इस्तेमाल करते हैं।
कॉल इस समारोह से पहले आप मुख्य के अंत में वापसी:
void onEnd()
{
printf("Press any key to exit...");
_getch();
}
जब मैं दृश्य स्टूडियो का उपयोग कर रहा है और मैं Ctrl +F5 कीस्ट्रोक का उपयोग कर डिबगिंग मैं सिर्फ इसे चलाने की जरूरत नहीं है – और यह कंसोल को बंद होने से रोकता है।
मैं का उपयोग करें:
cin.get()
मैंने सुना है यह कम महंगा प्रणाली की तुलना में ("रोकें") था और यह POSIX सिस्टम पर भी काम करता है। एक शानदार link है जो इस बारे में विस्तार से बताता है।
किसी भी चीज़ के साथ महंगा क्या करना है? कोड का पूरा बिंदु टर्मिनल विंडो को तब तक लटकाना है जब तक कि आप कोई कुंजी दबाए रखें। आपको लगता है कि 'सिस्टम ("PAUSE") 'की तुलना में कितनी धीमी है आपके प्रतिबिंब ;-) –
कुछ भी करने के लिए प्रलोभन का विरोध करें। अच्छी तरह से व्यवहार कमांड लाइन प्रोग्राम बाहर निकलते हैं जब वे अपने निकास कोड के माध्यम से एक स्थिति की रिपोर्टिंग समाप्त करना समाप्त कर देते हैं। इससे उन्हें स्वचालित वातावरण में स्क्रिप्ट योग्य और 'अच्छे नागरिक' बनने में सक्षम बनाता है। एक इंटरैक्टिव वातावरण में भी, उपयोगकर्ता को आपके डीबगिंग पर्यावरण की वजह से अतिरिक्त कुंजी प्रेस क्यों मजबूर करनी पड़ती है?
यदि आप डीबग करने के बजाए दौड़ते हैं तो विजुअल स्टूडियो एक कंसोल विंडो खुल जाएगा जो आपके एप्लिकेशन के बाहर निकलने के बाद रुक जाएगा ताकि आप अभी भी आउटपुट देख सकें। मुझे नहीं पता कि जब आप डीबग करते हैं तो व्यवहार अलग क्यों होता है, शायद इसलिए कि आपके पास ब्रेकपॉइंट्स उपलब्ध हैं, इसलिए यदि आप विभिन्न चरणों में आउटपुट देखना चाहते हैं तो आप प्रासंगिक आउटपुट स्टेटमेंट के बाद ब्रेकपॉइंट्स डाल सकते हैं, या main
के अंत में या विभिन्न सक्षम कर सकते हैं 'अपवाद फेंकने पर रोकें' विकल्प।
जो भी कारण है, मैंने कभी भी अपने डिबगिंग अनुभव को बढ़ाने के लिए अपने आवेदन के व्यवहार से समझौता करने के लिए मजबूर नहीं किया है।
रन बनाम डीबग के व्यवहार में अंतर के लिए +1। –
इस धागे में "ऐसा न करें" प्रतिक्रियाएं प्रतीत हो सकती हैं, लेकिन वे काफी समझदार हैं। मैं इस सवाल में हुआ क्योंकि मैं एक gtest suite को डिबग कर रहा हूं जो ठीक चलने के लिए उपयोग किया जाता था, लेकिन लॉन्च होने पर रहस्यमय तरीके से दुर्घटनाग्रस्त हो जाता है। कंसोल से चलाते समय, यह एक संवाद को पॉप करता है कि "blah.exe ने काम करना बंद कर दिया है"; लेकिन, जब डीबगर से चलाया जाता है, तो कंसोल क्षणिक रूप से पॉप अप हो जाता है, गायब हो जाता है, और प्रोग्राम 0 स्थिति से बाहर निकलता है।
मुझे इस बारे में सोचना चाहिए था कि व्यवहार में यह अंतर कितना अजीब था, लेकिन इसके बजाय मैं ऐसा था: "अरे, मैन --- मुझे उस कंसोल विंडो को बनाए रखना होगा ताकि मैं देख सकूं कि यह क्या कहता है।" सही?
यह पता चला है कि जिस मशीन पर मैं काम कर रहा हूं (मेरे एक सहयोगी) में '--gtest_filter = * testMsg *' पर डीबगर सेट के लिए 'कमांड तर्क' था। मैंने यह भी तुरंत देखा, लेकिन यह मेरे लिए कभी नहीं हुआ कि फिल्टर से मेल खाने वाले सभी परीक्षणों का नाम हाल ही में किया गया था। इसलिए, जब डीबगर से लॉन्च किया गया, तो gtest को चलाने के लिए कोई परीक्षण नहीं मिला था और बस बाहर निकल रहा था। मेरे जीवन का एक और 9 0 मिनट मैं कभी वापस नहीं आऊंगा। (-_-) अगर मैं अपने घुटने-झटके की प्रतिक्रिया को नहीं सोचता था तो मुझे इस टैर बच्चे को बहुत जल्द छीन सकता था, मुझे समस्या को हल करने के लिए उस कंसोल विंडो को खुले रहने की आवश्यकता थी ...
- 1. डीएओ पैटर्न के लिए सबसे अच्छा अभ्यास?
- 2. टाइमज़ोन रूपांतरणों के लिए सबसे अच्छा अभ्यास क्या है?
- 3. ऑब्जेक्ट्स नामकरण गुणों के लिए सबसे अच्छा अभ्यास क्या है?
- 4. सी ++ पब्लिक एपीआई के लिए सबसे अच्छा अभ्यास क्या है?
- 5. यदि शर्तों के लिए सबसे अच्छा कोडिंग अभ्यास क्या है?
- 6. टी-एसक्यूएल के लिए संग्रहीत प्रक्रिया का नामकरण करने का सबसे अच्छा अभ्यास क्या है?
- 7. अभी दृढ़ता के लिए सबसे अच्छा अभ्यास क्या है?
- 8. टैब नेविगेशन के लिए सबसे अच्छा अभ्यास?
- 9. विरासत कक्षाओं के भीतर लॉक का उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है
- 10. सबसे अच्छा अभ्यास परिणाम
- 11. "अनंत लूप" का परीक्षण करने के लिए सबसे अच्छा अभ्यास क्या है?
- 12. ईसी 2 उपलब्धता क्षेत्र का उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है?
- 13. गैलरी के लिए छवियों को संग्रहीत करने के लिए सबसे अच्छा अभ्यास क्या है?
- 14. जावा में तिथियों में हेरफेर करने और संग्रहीत करने के लिए सबसे अच्छा अभ्यास क्या है?
- 15. iPhone 5 के लिए एप्लिकेशन का विस्तार - सबसे अच्छा अभ्यास
- 16. वर्गीकरण समस्या के लिए नकली डेटा उत्पन्न करने का सबसे अच्छा तरीका क्या है?
- 17. रखरखाव सीएसएस लिखने के लिए सबसे अच्छा अभ्यास क्या हैं?
- 18. भट्ठी भंडारों के लिए सबसे अच्छा अभ्यास क्या हैं?
- 19. django + Pymongo पूलिंग का सबसे अच्छा अभ्यास?
- 20. PHP के माध्यम से एचटीएमएल विशेषता सेट करने का सबसे अच्छा अभ्यास क्या है?
- 21. जावास्क्रिप्ट सरणी नई सरणी के बजाय [] का उपयोग करने के लिए सबसे अच्छा अभ्यास है?
- 22. स्क्रिप्ट के अंदर काम करने वाली निर्देशिकाओं को बदलने के लिए सबसे अच्छा अभ्यास क्या है?
- 23. ASP.NET के साथ विशाल बाइनरी फ़ाइलों को स्थानांतरित करने के लिए सबसे अच्छा अभ्यास क्या है?
- 24. जावास्क्रिप्ट के लिए सबसे अच्छा अभ्यास अभ्यास शैली क्या है? क्यूं कर?
- 25. , EJB3 माना सबसे अच्छा अभ्यास
- 26. जावा एनम दस्तावेज करने के लिए जावाडॉक का उपयोग करने का सबसे अच्छा तरीका क्या है?
- 27. i18n उपयोग जावा को लागू करने के लिए सबसे अच्छा अभ्यास क्या है?
- 28. PHP में लगातार डेटाबेस में परिवर्तनों की जांच करने के लिए सबसे अच्छा अभ्यास क्या है?
- 29. PHP के साथ प्रमाणीकरण के लिए कुकीज़ का उपयोग करने के लिए सबसे अच्छा अभ्यास क्या है?
- 30. एक्सएमएल वेब सेवाओं में, ग्राहक को अपवाद पारित करने के लिए सबसे अच्छा अभ्यास क्या है?
std :: cin.get() का एक ही प्रभाव होता है और छोटा –
यह खिड़की रखता है जब तक कि यह एक चरित्र प्राप्त नहीं कर लेता है। जो बफर को फिसल नहीं जाता है (सीन बफर किया जाता है)। इसलिए उपयोगकर्ता को प्रवेश करने की आवश्यकता है (या बहुत सारे अक्षर टाइप करें और बफर भरें)। –
@ robson3.1415, @martin संपादित करें :-) –