Stream insertion और extraction operators
अपने types को > के माध्यम से std::cout के साथ काम करना सिखाएँ।
Stream insertion और extraction operators, CoddyKit पर C++ Academy का एक निःशुल्क पाठ है। यह 4 में से 2वाँ पाठ है। इस अध्ययन पथ के 3 तक कोई भी पाठ पूरा पढ़ना निःशुल्क है — इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ व्यावहारिक अभ्यास भी उपलब्ध कराता है। यह C++ Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
<< और >> को ओवरलोड क्यों करें
स्ट्रीम ऑपरेटरों को ओवरलोड करके अपने प्रकारों को std::cout और std::cin के साथ काम करने योग्य बनाएं।
इन्सर्शन ऑपरेटर <<
इसे आउटपुट स्ट्रीम का संदर्भ लेने वाले स्वतंत्र फ़ंक्शन के रूप में परिभाषित करें। चेनिंग सक्षम करने के लिए स्ट्रीम लौटाएँ।
struct Point { int x, y; };
std::ostream& operator<<(std::ostream& os, const Point& p) {
return os << "(" << p.x << ", " << p.y << ")";
}
Point p{3, 4};
std::cout << p << "\n"; // (3, 4)स्वतंत्र फ़ंक्शन क्यों?
यदि आप इसे सदस्य के रूप में लिखते, तो बायाँ ऑपरेंड Point होना पड़ता—यह असंभव है, क्योंकि बाईं ओर std::ostream चाहिए। स्वतंत्र फ़ंक्शन दोनों क्रमों का समर्थन करते हैं।
एक्सट्रैक्शन ऑपरेटर >>
इसे इनपुट स्ट्रीम से पढ़ने के लिए परिभाषित करें। इनपुट को सत्यापित करें और विफलता पर failbit सेट करें।
std::istream& operator>>(std::istream& is, Point& p) {
char open, comma, close;
is >> open >> p.x >> comma >> p.y >> close;
if (open != '(' || comma != ',' || close != ')')
is.setstate(std::ios::failbit);
return is;
}स्ट्रीम की विफलता स्थिति सेट करना
यदि पार्सिंग विफल हो जाए, तो is.setstate(std::ios::failbit) कॉल करें। कॉल करने वाला !is या is.fail() से विफलता का पता लगा सकता है।
फ़्रेंड घोषणाएँ
यदि ऑपरेटर को निजी सदस्यों तक पहुँच चाहिए, तो उसे क्लास के अंदर friend के रूप में घोषित करें।
class Point {
int x_, y_;
public:
friend std::ostream& operator<<(std::ostream& os, const Point& p);
};टेम्पलेटयुक्त स्ट्रीम प्रकार
अधिकतम पोर्टेबिलिटी के लिए, अक्षर प्रकार पर टेम्पलेट बनाएं। यह विस्तृत-अक्षर स्ट्रीम के लिए उपयोगी है।
template <typename CharT>
std::basic_ostream<CharT>& operator<<(
std::basic_ostream<CharT>& os, const Point& p) {
return os << "(" << p.x << ", " << p.y << ")";
}चेनिंग
स्ट्रीम लौटाने से उपयोगकर्ता ऑपरेशनों को चेन कर सकते हैं।
std::cout << "Result: " << point << ", distance: " << dist;कस्टम फ़ॉर्मैटिंग
उन्नत फ़ॉर्मैटिंग के लिए std::ios::fmtflags या C++20 के std::format का उपयोग करें। स्ट्रीम सरल होते हैं, लेकिन उनका स्थानीयकरण कठिन होता है।
JSON-शैली आउटपुट
आप अपने ऑपरेटर में फ़ॉर्मैटिंग के विकल्पों को एक साथ व्यवस्थित कर सकते हैं। जटिल आउटपुट के लिए सहायक फ़ंक्शन लिखें।
एकाधिक लाइनें पढ़ना
लाइन-आधारित पठन के लिए std::getline का उपयोग करें, फिर स्ट्रिंगस्ट्रीम से पार्स करें—इससे आपका operator>> सरल रहता है।
प्रदर्शन सुझाव
बहुत अधिक थ्रूपुट वाली लॉगिंग के लिए समर्पित लाइब्रेरी (spdlog, fmt) को प्राथमिकता दें—वे स्ट्रीम की तुलना में काफ़ी बेहतर प्रदर्शन करती हैं।
त्वरित जाँच
उपयोगकर्ता-परिभाषित प्रकार के लिए operator<< को सदस्य के बजाय स्वतंत्र फ़ंक्शन के रूप में क्यों परिभाषित किया जाता है?
पुनरावलोकन
operator<< और operator>> को स्ट्रीम का संदर्भ लेने वाले स्वतंत्र फ़ंक्शन के रूप में ओवरलोड करें। चेनिंग के लिए स्ट्रीम लौटाएँ। पार्सिंग की त्रुटियों पर failbit सेट करें। निजी अभिगम की आवश्यकता होने पर friend का उपयोग करें।
एआई शिक्षक के साथ C++ सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 51
- पाठ
- 203
अक्सर पूछे जाने वाले प्रश्न
क्या “Stream insertion और extraction operators” पाठ निःशुल्क है?
हाँ — C++ Academy अध्ययन पथ के 3 तक कोई भी पाठ, जिसमें “Stream insertion और extraction operators” भी शामिल है, यहाँ वेब पर पूरा पढ़ना निःशुल्क है। इसके बाद CoddyKit PRO हर पाठ अनलॉक करता है, साथ ही अंतर्निर्मित कोड संपादक और चौबीसों घंटे एआई शिक्षक के साथ इंटरैक्टिव अभ्यास भी उपलब्ध कराता है। C++ Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“Stream insertion और extraction operators” में मैं क्या सीखूँगा?
अपने types को > के माध्यम से std::cout के साथ काम करना सिखाएँ। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ C++ Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या C++ Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर C++ Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 2वाँ पाठ है।
“Stream insertion और extraction operators” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस C++ Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर C++ Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- Arithmetic और comparison operators
- Stream insertion और extraction operators
- Subscript और function call operators
- Three-way comparison operator C++20