c++ - दृश्य स्टूडियो 2005 आउटपुट विंडो में कैट कैप्चर करना?




visual-studio visual-c++-2005 (4)

आप इस तरह से कॉट के आउटपुट को कैप्चर कर सकते हैं, उदाहरण के लिए:

std::streambuf* old_rdbuf = std::cout.rdbuf();
std::stringbuf new_rdbuf;
// replace default output buffer with string buffer
std::cout.rdbuf(&new_rdbuf);

// write to new buffer, make sure to flush at the end
std::cout << "hello, world" << std::endl;

std::string s(new_rdbuf.str());
// restore the default buffer before destroying the new one
std::cout.rdbuf(old_rdbuf);

// show that the data actually went somewhere
std::cout << s.size() << ": " << s;

इसे विज़ुअल स्टूडियो 2005 आउटपुट विंडो में देखते हुए विज़ुअल स्टूडियो 2005 प्लगिन डेवलपर के लिए एक कसरत के रूप में छोड़ दिया जाता है। लेकिन आप संभवत: इसे किसी अन्य जगह, एक फ़ाइल या कस्टम विंडो की तरह रीडायरेक्ट कर सकते हैं, शायद एक कस्टम स्ट्रीमबुफ़ क्लास लिखकर (इसे भी बढ़ावा दें। Iostream)।

मैंने एक C ++ कंसोल ऐप बनाया है और केवल दृश्य स्टूडियो 2005 IDE के भीतर आउटपुट विंडो में cout / cerr स्टेटमेंट को कैप्चर करना चाहते हैं। मुझे यकीन है कि यह केवल एक ऐसी सेटिंग है जिसे मैं याद कर रहा हूं। क्या कोई मुझे सही दिशा दिखा सकता है?


आप ऐसा नहीं कर सकते

यदि आप डिबगर की आउटपुट विंडो में आउटपुट करना चाहते हैं, तो आउटपुट डीबगस्ट्रिंग को कॉल करें।

मैंने इसे 'टीस्ट्रीम' के कार्यान्वयन के रूप में देखा, जो एक आउटपुट को एकाधिक धाराओं में जाने की अनुमति देता है। आप एक स्ट्रीम को लागू कर सकते हैं जो डेटा आउटपुट डबगस्ट्रिंग को भेजता है।


बेन का उत्तर और माइक डिमिक्क का एक संयोजन: आप एक स्ट्रीम_बुफ़_ को कार्यान्वित करेंगे, जो आउटपुट डबगस्ट्रिंग को कॉल करना समाप्त कर देगा। शायद किसी ने पहले से ही यह किया है? दो प्रस्तावित बूस्ट लॉगिंग पुस्तकालयों पर एक नज़र डालें।







visual-c++-2005