printf(...)
कंसोल पर आउटपुट आउटपुट की संख्या देता है, जो मुझे कुछ प्रोग्रामों को डिजाइन करने में बहुत उपयोगी लगता है। तो, मैं सोच रहा था कि सी ++ में एक समान सुविधा है, क्योंकि cout < < एक ऑपरेटर है जो रिटर्न प्रकार के बिना है (कम से कम मैं इसे समझने से)।क्या सी ++ में मुद्रित वर्णों की संख्या प्राप्त करने का कोई आसान तरीका है?
8
A
उत्तर
5
आप वर्णों की गिनती के लिए अपना खुद का streambuf
cout
जोड़ सकते हैं।
इस वर्ग कि यह सब लपेटता है:
class CCountChars {
public:
CCountChars(ostream &s1) : m_s1(s1), m_buf(s1.rdbuf()), m_s1OrigBuf(s1.rdbuf(&m_buf)) {}
~CCountChars() { m_s1.rdbuf(m_s1OrigBuf); m_s1 << endl << "output " << m_buf.GetCount() << " chars" << endl; }
private:
CCountChars &operator =(CCountChars &rhs) = delete;
class CCountCharsBuf : public streambuf {
public:
CCountCharsBuf(streambuf* sb1) : m_sb1(sb1) {}
size_t GetCount() const { return m_count; }
protected:
virtual int_type overflow(int_type c) {
if (streambuf::traits_type::eq_int_type(c, streambuf::traits_type::eof()))
return c;
else {
++m_count;
return m_sb1->sputc((streambuf::char_type)c);
}
}
virtual int sync() {
return m_sb1->pubsync();
}
streambuf *m_sb1;
size_t m_count = 0;
};
ostream &m_s1;
CCountCharsBuf m_buf;
streambuf * const m_s1OrigBuf;
};
और तुम इस तरह इसका इस्तेमाल: वस्तु उदाहरण मौजूद है
{
CCountChars c(cout);
cout << "bla" << 3 << endl;
}
हालांकि यह अदालत द्वारा सभी पात्रों उत्पादन गिना जाता है।
ध्यान रखें कि यह केवल cout
के माध्यम से वर्ण आउटपुट की गणना करेगा, printf
के साथ मुद्रित वर्ण नहीं।
1
आप एक फ़िल्टरिंग स्ट्रीम बफर बना सकते हैं जो लिखे गए अक्षरों की संख्या की रिपोर्ट करता है। उदाहरण के लिए:
class countbuf
: std::streambuf {
std::streambuf* sbuf;
std::streamsize size;
public:
countbuf(std::streambuf* sbuf): sbuf(sbuf), size() {}
int overflow(int c) {
if (traits_type::eof() != c) {
++this->size;
}
return this->sbuf.sputc(c);
}
int sync() { return this->sbuf->pubsync(); }
std::streamsize count() { this->size; }
};
तुम सिर्फ इस धारा बफर एक फिल्टर के रूप का उपयोग करेंगे:
int main() {
countbuf sbuf;
std::streambuf* orig = std::cout.rdbuf(&sbuf);
std::cout << "hello: ";
std::cout << sbuf.count() << "\n";
std::cout.rdbuf(orig);
}
संबंधित मुद्दे
- 1. जावास्क्रिप्ट में एक अद्वितीय संख्या में वर्णों की एक अद्वितीय स्ट्रिंग को परिवर्तित करने का कोई आसान तरीका है?
- 2. क्या स्ट्रिंग के अंतिम जोड़े वर्णों को स्टाइल करने का कोई आसान तरीका है?
- 3. जावास्क्रिप्ट में केवल एक संख्या का संकेत प्राप्त करने का सबसे आसान तरीका क्या है?
- 4. क्या ओपनिड को लागू करने का कोई आसान तरीका है?
- 5. टेक्स्ट फ़ाइल की प्रत्येक पंक्ति में वर्णों की संख्या को मुद्रित करने के लिए
- 6. क्या जावा वस्तु का आकार प्राप्त करने का कोई आसान तरीका है?
- 7. क्या XAML तत्व की सटीक प्रति (क्लोन) प्राप्त करने के लिए कोई आसान/अंतर्निहित तरीका है?
- 8. क्या पीईडीईवी में आरईपीएल प्राप्त करने का कोई तरीका है?
- 9. सी # में अर्ध यादृच्छिक संख्या उत्पन्न करने का सबसे आसान तरीका क्या है?
- 10. क्या प्रारूपित, सुंदर मुद्रित, आउटपुट आउटपुट में पिरामिड जेसन रेंडरर प्राप्त करने का कोई तरीका है?
- 11. TStringGrid - क्या "वर्तमान/चयनित" पंक्ति प्राप्त करने का कोई आसान तरीका है?
- 12. fscanf में "वर्णों की संख्या पढ़ने" की सीमा क्या है?
- 13. क्या केकपीएचपी में एक दृश्य से AuthComponent उपयोगकर्ता डेटा प्राप्त करने का कोई आसान तरीका है?
- 14. सी ++ 0x यादृच्छिक संख्या जनरेटर की स्थिति प्राप्त करने का मानक तरीका क्या है?
- 15. क्या gnuplot में काले रूपरेखा के साथ अंक प्राप्त करने का कोई आसान तरीका है?
- 16. क्या ओपनजीएल में छाया प्राप्त करने का कोई आसान तरीका है?
- 17. क्या विंडोज फोन में यूआरआई से क्वेरी स्ट्रिंग पैरामीटर प्राप्त करने का कोई आसान तरीका है?
- 18. क्या सिम्फनी में सर्वर नाम प्राप्त करने का कोई आसान तरीका है?
- 19. सी ++ कक्षाओं के स्वचालित पंपलिंग - क्या कोई आसान तरीका है?
- 20. क्या लिनक्स में प्रक्रियाओं की वर्तमान संख्या प्राप्त करने का हल्का तरीका है?
- 21. सी में उपयोगकर्ता इनपुट प्राप्त करने का सबसे आसान तरीका क्या है?
- 22. क्या विशेषता का फ्रंटएंड मान प्राप्त करने का कोई आसान तरीका है?
- 23. क्या पर्ल नियमित अभिव्यक्ति का मिलान करने की संख्या का मूल्यांकन करने का कोई तरीका है?
- 24. जावा में 'है' करने का सबसे आसान तरीका क्या है?
- 25. क्या सी # कक्षाओं को PHP में परिवर्तित करने का कोई आसान तरीका है?
- 26. क्या सी # में दिनांक परिवर्तन की अधिसूचना प्राप्त करने का कोई तरीका है?
- 27. क्या मल्टी-मॉड्यूल मैवेन प्रोजेक्ट की संरचना मुद्रित करने का कोई तरीका है?
- 28. क्या कोई संदर्भ पता प्राप्त करने का कोई तरीका है?
- 29. क्या सी ++ एनम स्ट्रिंग में कनवर्ट करने का कोई आसान तरीका है?
- 30. क्या सी # में कुंजी के आधार पर NameValueCollection को सॉर्ट करने का कोई आसान तरीका है?
मैं ('ostringstream' के साथ) लगता है आपका सर्वश्रेष्ठ दांव एक स्मृति बफर करने के लिए उत्पादन के लिए है, यह गिनती, और फिर आउटपुट जो कंसोल –
पर बफर करता है, मुझे पुराने स्कूल सी कार्यों के साथ हमेशा जटिल स्वरूपण मिलना आसान लगता है। क्या printf से बचने के लिए कोई विशिष्ट कारण है? –
ओह, क्षमा करें। मुझे यह भी पता नहीं था कि printf C++ में काम करता है, सोचा कि इसे cout << होना चाहिए। – Della