2011-01-04 22 views
6

सुप्रभात,cout पर कोई कंसोल आउटपुट

मुझे सी/सी ++ डेवलपर्स के लिए एक्लिप्स आईडीई के साथ कोई समस्या है।

मैं स्ट्रिंग्स को बदलने के लिए एक स्माल टूल लिख रहा हूं। कुछ बिंदु पर परीक्षण करते समय ग्रहण कंसोल आउटपुट देने के लिए रुक गया। उदा .:
cout<<"test";
प्रदर्शित हो नहीं करता है।

लेकिन यह हर नहीं है जहां ... एक और उदाहरण:

// File path as argument 
int main(int argc, char* argv[]) { 
if (argc != 2) { 
    cout 
      << "ERROR: Wrong amount of arguments! Only one allowed...\n"; 
    cout << "\n" << "Programm closed...\n\n"; 
    exit(1); 
} 

CommandConverter a(argv[1]); 
cout<<"test"; 
a.getCommandsFromCSV(); 
cout<<"test2"; 

return 0; 
} 

त्रुटि संदेश सही ढंग से प्रदर्शित किया जाता है, तो तर्क गुम है। लेकिन अगर तर्क नहीं है और कार्यक्रम परीक्षण आउटपुट जारी है:

cout<<"test";
cout<<"test2";

प्रदर्शित नहीं होते हैं ...
मैं कुछ स्पष्ट याद आ रही है?

अग्रिम धन्यवाद!

+0

मैंने ग्रहण का उपयोग नहीं किया है, लेकिन क्या आप सुनिश्चित हैं कि आपका कोड ठीक काम कर रहा है। यदि मौके से, यह 'कमांड कनवर्टर ए (argv [1])' पर क्रैश हो रहा है, और आपको क्रैश की अधिसूचना नहीं दी गई है, तो आपको कोई आउटपुट दिखाई नहीं देगा। –

+0

यदि आप कमांड लाइन पर चलते हैं तो क्या होता है? – Nim

+0

मैं इसे केवल कमांडलाइन पर एटीएम चला रहा हूं ... लेकिन ग्रहण कंसोल के माध्यम से ऐसा कर रहा हूं ... क्या ऐसा नहीं होना चाहिए? - कोड वहां दुर्घटनाग्रस्त नहीं होता है ... यह बहुत बाद में करता है ... आगे के विश्लेषण के लिए मुझे बाहर रखा जाना चाहिए। यदि मैं डीबग करता हूं और उस बिंदु को पास करता हूं तो कुछ भी प्रदर्शित नहीं होता है:/ – Beasly

उत्तर

11

आप, न्यू लाइन के साथ उत्पादन तार को समाप्त करने की जरूरत है, उदा .: `अदालत < <" परीक्षण \ n "` `। कारण यह है कि मानक आउटपुट buffered है और बफर न्यूलाइन पर flushed है। एक नई लाइन आउटपुट किए बिना कोउट बफर को फ्लश करने का शायद एक तरीका मौजूद है, लेकिन मुझे इसे दिल से नहीं पता है। शायद अंतर्निहित स्ट्रीमबफ तक पहुंच (rdbuf विधि के माध्यम से) शामिल है।

+11

बेहतर अभी तक 'endl' – ismail

+0

का उपयोग करें मैंने अभी कोशिश की है ... एक ही व्यवहार :( – Beasly

+5

क्या आपने std :: endl के साथ प्रयास किया है क्योंकि इस्माइल कहता है? वास्तव में आउटपुट बफर को फ़्लश करना है । '\ n' नहीं है। – stijn

1

मुझे एक ही समस्या थी। मेरे मामले में प्रोग्राम कमांड लाइन से चलने पर आउटपुट देगा, लेकिन ग्रहण कंसोल से नहीं। समाधान ग्रहण के 32 बिट संस्करण का उपयोग करना था, न कि 64 बिट एक।

मैंने पढ़ा कि यह एक बग था। यद्यपि एक ही मुद्दा नहीं हो सकता है।

-3

प्रत्येक पंक्ति

अदालत < < "" की शुरुआत में एक अंतरिक्ष outputting कोशिश < < .....

+1

कार्गो पंथ प्रोग्रामिंग एफटीडब्ल्यू प्रिंट नहीं करता है! – sbk

3

के लिए मुझे ग्रहण (इंडिगो 3.7) के 32 बिट संस्करण और 32 को स्थापित करने से बिट जावा जेडीके/जेआरई काम नहीं किया।

उद्धरण Eclipse CDT/User/FAQ - Eclipse console does not show output on Windows से:: मैं ग्रहण CDT/प्रयोक्ता/पूछे जाने वाले प्रश्न से बहुत जल्दी समाधान का उपयोग

Eclipse console does not show output on Windows In Eclipse CDT on Windows, standard output of the program being run or debugged is fully buffered, because it is not connected to a Windwos console, but to a pipe. See bug 173732 for more details. Either add fflush calls after every printf or add the following lines in the start of the main function:

setvbuf(stdout, NULL, _IONBF, 0); 
setvbuf(stderr, NULL, _IONBF, 0); 
+0

यह विंडोज वर्कअराउंड उबंटू 12.10 64-बिट पर सीडीटी 6.0 के साथ एक्लिप्स 3.8 64-बिट के लिए भी काम करता है। – Lucas

0

मैं भी वास्तव में इस जानकारी के लिए खोज रहा था जब मैं माइक्रोसॉफ्ट वेबसाइट पर इस पाया http://support.microsoft.com/kb/94227

मुझे लगता है कि एक सरल विधि है जब आप आंतरिक बफर अदालत का उपयोग करता है

निस्तब्धता बाध्य करना चाहते हैं std :: फ्लश उपयोग करने के लिए है
0

यह तब होता है जब आप अपना कोड डीबग करते हैं और आखिरी तक आउटपुट नहीं देखते हैं। उपयोग

cout<<"what ever overloads"<< flush; 

stdout पर उत्पादन तुरंत (कंसोल)

-1

हाय देखने के लिए कुछ इसी तरह संघर्ष मैं पता लगा, कि इस परियोजना के गुणों के पहले तत्व वातावरण पथ चर होना चाहिए "सी के बाद: \ MinGW \ बिन, " अन्यथा एक गलत संस्करण का उपयोग किया जा सकता है, खासकर यदि आप विभिन्न कंपाइलर का उपयोग करते हैं।

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