C++ मूल इनपुट/आउटपुट: Cout, Cin, Cerr उदाहरण

⚡ स्मार्ट सारांश

C++ इनपुट और आउटपुट ऑपरेशन स्ट्रीम ऑब्जेक्ट पर निर्भर करते हैं जो प्रोग्राम और डिवाइस के बीच बाइट अनुक्रम के रूप में डेटा को स्थानांतरित करते हैं, जिसमें cin कीबोर्ड इनपुट को पढ़ता है और cout, cerr और clog आउटपुट को स्क्रीन पर लिखते हैं।

  • 🔘 स्ट्रीम: इनपुट और आउटपुट कार्य बाइट अनुक्रमों के रूप में यात्रा करते हैं जिन्हें स्ट्रीम कहा जाता है, जो मुख्य मेमोरी और उपकरणों के बीच डेटा को स्थानांतरित करते हैं।
  • 📥 हेडर फ़ाइलें: iostream, iomanip और fstream लाइब्रेरी बुनियादी इनपुट और आउटपुट के लिए उपयोग किए जाने वाले ऑब्जेक्ट और मैनिपुलेटर को परिभाषित करती हैं।
  • 🖨️ cout और cin: cout ऑब्जेक्ट इंसर्शन ऑपरेटर के साथ प्रिंट करता है, जबकि cin एक्सप्रेशन ऑपरेटर के साथ मान पढ़ता है।tracकार्य संचालक।
  • ⚠️ सेर और क्लॉग: दोनों त्रुटियों की रिपोर्ट करते हैं, फिर भी cerr तत्काल प्रदर्शन के लिए अनबफर्ड रहता है जबकि clog पहले संदेशों को बफर करता है।
  • ️ त्रुटि प्रबंधन: गुड, बैड, फेल और ईओएफ चेक स्ट्रीम की स्थिति को पढ़ते हैं, इसलिए विफल ऑपरेशनों को सुरक्षित रूप से पकड़ा जाता है।
  • 🤖 एआई सहायता: GitHub Copilot जैसे AI कोडिंग सहायक एक छोटी टिप्पणी या फ़ंक्शन नाम से cin और cout का कोड तैयार करते हैं।

C++ मूल इनपुट आउटपुट

स्ट्रीम्स क्या हैं? C++?

C++ उपयोगकर्ताओं को कई लाइब्रेरी प्रदान करता है जिनका उपयोग वे इनपुट/आउटपुट कार्य करने के लिए कर सकते हैं। ये कार्य बाइट अनुक्रमों के रूप में किए जाते हैं, जिन्हें लोकप्रिय रूप से स्ट्रीम कहा जाता है।

धाराओं को दो भागों में विभाजित किया गया है:

धाराओं के प्रकार

  • आगत प्रवाह: यह एक प्रकार की स्ट्रीम है जिसमें बाइट्स किसी डिवाइस जैसे कि कीबोर्ड से मुख्य मेमोरी तक प्रवाहित होते हैं।
  • आउटपुट स्ट्रीम: यह एक प्रकार की स्ट्रीम है जिसमें बाइट्स विपरीत दिशा में प्रवाहित होते हैं, अर्थात मुख्य मेमोरी से डिवाइस जैसे डिस्प्ले स्क्रीन तक।

धाराएँ कैसे काम करती हैं?

C++ धाराएँ निम्नानुसार काम करती हैं:

  1. सबसे पहले, स्ट्रीम को सही प्रकार से आरंभ किया जाता है।
  2. इसके बाद, आपको गेट/पुट पॉइंटर्स का उपयोग करके यह बताना चाहिए कि इनपुट/आउटपुट (I/O) कहाँ होगा।
  3. स्ट्रीम में सही स्थान पर पहुंचने के बाद, आप क्रमशः >> और << ऑपरेटरों का उपयोग करके इनपुट और आउटपुट कार्य कर सकते हैं।

फ़ंक्शन तालिका

stream.h हेडर फ़ाइल में निम्नलिखित फ़ंक्शन दिए गए हैं:

वर्गकार्य
फ़ाइलबफ़यह फ़ाइल बफ़र्स को पढ़ने/लिखने के लिए सेट करता है। इसमें close() और open() फ़ंक्शन हैं
एफस्ट्रीमबेसयह ifstream, fstream और ofstream क्लासों के लिए आधार क्लास है। इसके संचालन फ़ाइल स्ट्रीम के लिए सामान्य हैं।
अगरस्ट्रीमयह इनपुट ऑपरेशन प्रदान करने के लिए एक इनपुट फ़ाइल स्ट्रीम क्लास है।
ऑफस्ट्रीमयह आउटपुट ऑपरेशन प्रदान करने के लिए एक आउटपुट फ़ाइल स्ट्रीम क्लास है।
उपजा हुआयह एक इनपुट/आउटपुट स्ट्रीम क्लास है। यह एक साथ इनपुट/आउटपुट संचालन का समर्थन करता है।

C++ इनपुट/आउटपुट के लिए हेडर फ़ाइलें

C++ तीन लाइब्रेरी प्रदान करता है जो बुनियादी इनपुट/आउट कार्यों को करने के लिए फ़ंक्शन के साथ आते हैं। उनमें शामिल हैं:

  • आईओएसट्रीम: यह मानक इनपुट/आउटपुट स्ट्रीम का संक्षिप्त नाम है। यह हेडर फ़ाइल cin/ cout/cerr जैसी ऑब्जेक्ट्स के लिए परिभाषाओं के साथ आती है।
  • इओमानिप: यह इनपुट/आउटपुट मैनिपुलेटर्स का संक्षिप्त नाम है। लाइब्रेरी में ऐसे फ़ंक्शन होते हैं जिनका उपयोग स्ट्रीम के हेरफेर के लिए किया जा सकता है। इसमें setw, setprecision और अन्य ऑब्जेक्ट्स के लिए परिभाषाएँ शामिल हैं।
  • एफस्ट्रीम: यह फ़ाइल स्ट्रीम का वर्णन करने के लिए एक हेडर फ़ाइल है। यह उस डेटा को संभालता है जिसे फ़ाइल से इनपुट के रूप में पढ़ा जाता है या जिसे फ़ाइल में लिखा जाता है, आउटपुट।

Cin और cout कीवर्ड बहुत लोकप्रिय हैं C++इनका उपयोग क्रमशः इनपुट लेने और आउटपुट प्रिंट करने के लिए किया जाता है। इनका उपयोग करने के लिए, आपको अपने प्रोग्राम में iostream हेडर फ़ाइल शामिल करनी होगी। इसका कारण यह है कि वे उस हेडर फ़ाइल में परिभाषित हैं। iostream हेडर फ़ाइल को शामिल न करने पर त्रुटि उत्पन्न होगी। यह प्रोग्राम की विफलता के कारण होता है। C++ संकलक को कीवर्ड का अर्थ समझने में सहायता करना।

iostream हेडर फ़ाइल में परिभाषित प्रमुख ऑब्जेक्ट cin, cout, cerr और clog हैं। आइए उन पर चर्चा करें।

std::cout

cout ऑब्जेक्ट iostream क्लास का एक उदाहरण है। इसका उपयोग मानक आउटपुट डिवाइस पर आउटपुट बनाने के लिए किया जाता है, जो आमतौर पर स्क्रीन होती है। इसका उपयोग स्ट्रीम इंसर्शन ऑपरेटर (<<) के साथ किया जाता है।

उदाहरण

#include <iostream>
using namespace std;
int main() {

	char welcome[] = "Welcome to Guru99";

	cout << welcome << endl;

	return 0;
}

आउटपुट:

std::cout

कोड का स्क्रीनशॉट यहां दिया गया है:

std::cout

Code स्पष्टीकरण:

  1. iostream हेडर फ़ाइल को शामिल करें जहाँ cout ऑब्जेक्ट परिभाषित किया गया है।
  2. std नामस्थान को शामिल करें ताकि हमें इसकी कक्षाओं का उपयोग करते समय इसे कॉल न करना पड़े।
  3. main() फ़ंक्शन को कॉल करें। प्रोग्राम कोड को इसके बॉडी में जोड़ा जाना चाहिए। ओपनिंग कर्ली ब्रेस { इसके बॉडी की शुरुआत को चिह्नित करता है।
  4. Welcome to नामक एक कैरेक्टर वेरिएबल बनाएं जिसमें "Welcome to" स्ट्रिंग स्टोर हो। Guru99.
  5. कंसोल पर स्वागत स्ट्रिंग का मान प्रिंट करें। endl एक है C++ कीवर्ड का अर्थ है अंतिम पंक्ति। यह कर्सर को अगली पंक्ति पर टेक्स्ट प्रिंट करना शुरू करने के लिए ले जाता है।
  6. प्रोग्राम को सफल निष्पादन पर मान लौटाना होगा।
  7. फ़ंक्शन main() के मुख्य भाग का अंत.

std::cin

cin ऑब्जेक्ट istream क्लास का एक इंस्टेंस है। यह इनपुट डिवाइस, यानी कीबोर्ड से इनपुट पढ़ता है। इसका उपयोग आमतौर पर ex के साथ किया जाता है।traction ऑपरेटर (>>)। पूर्वtraction ऑब्जेक्ट ex के लिए ज़िम्मेदार हैtraccin ऑब्जेक्ट से कीबोर्ड के माध्यम से दर्ज किया गया डेटा।

उदाहरण

निम्न उदाहरण दर्शाता है कि cin कीवर्ड का उपयोग कैसे किया जाता है C++:

#include <iostream>
using namespace std;
int main()
{
	int number;

	cout << "Enter a number:";
	cin >> number;
	cout << "\nYou entered: " << number;

	return 0;
}

आउटपुट:

std::cin

कोड का स्क्रीनशॉट यहां दिया गया है:

std::cin

Code स्पष्टीकरण:

  1. हमारे प्रोग्राम में iostream हेडर फ़ाइल शामिल करें। cin ऑब्जेक्ट इस हेडर फ़ाइल में परिभाषित किया गया है।
  2. इसके क्लासों का उपयोग करने के लिए std नामस्थान शामिल करें। इसके क्लासों का उपयोग करते समय आपको std को कॉल करने की आवश्यकता नहीं होगी।
  3. main() फ़ंक्शन को कॉल करें। प्रोग्राम कोड को इसके बॉडी में जोड़ा जाना चाहिए।
  4. कार्यक्रम के मुख्य भाग का प्रारंभ.
  5. डिक्लेयर ए पूर्णांक चर नामित संख्या.
  6. स्क्रीन पर एक संदेश प्रिंट करें जिसमें उपयोगकर्ता को एक नंबर दर्ज करने के लिए कहा जाए।
  7. कीबोर्ड से कंसोल पर उपयोगकर्ता द्वारा दर्ज किया गया मान पढ़ें।
  8. ऊपर पढ़े गए मान को अन्य पाठ के साथ कंसोल पर प्रिंट करें।
  9. यदि प्रोग्राम सफलतापूर्वक निष्पादित होता है तो उसे एक मान लौटाना चाहिए।
  10. मुख्य फ़ंक्शन के मुख्य भाग का अंत.

std::cerr

cerr ऑब्जेक्ट त्रुटियों को आउटपुट करने के लिए मानक त्रुटि स्ट्रीम बनाता है C++. Cerr ostream क्लास का एक उदाहरण है। cerr ऑब्जेक्ट अनबफर है। इसका मतलब है कि इसका उपयोग तब किया जाता है जब कोई त्रुटि संदेश तुरंत प्रदर्शित किया जाना हो।

चूंकि यह अनबफर है, इसलिए यह बाद में प्रदर्शित करने के लिए त्रुटि संदेश संग्रहीत नहीं करता है। इसका उपयोग स्ट्रीम इंसर्शन ऑपरेटर (<<) के साथ किया जाता है।

उदाहरण

#include <iostream>
using namespace std;
int main() {

	cerr << "An Error occurred!";

	return 0;
}

आउटपुट:

std::cerr

कोड का स्क्रीनशॉट यहां दिया गया है:

std::cerr

Code स्पष्टीकरण:

  1. iostream हेडर फ़ाइल को शामिल करें जहाँ cerr ऑब्जेक्ट परिभाषित किया गया है।
  2. std नामस्थान को शामिल करें ताकि हमें इसकी कक्षाओं का उपयोग करते समय इसे कॉल न करना पड़े।
  3. main() फ़ंक्शन को कॉल करें। प्रोग्राम लॉजिक को इसके बॉडी में जोड़ा जाना चाहिए। ओपनिंग कर्ली ब्रेस फ़ंक्शन के बॉडी की शुरुआत को चिह्नित करता है।
  4. कंसोल पर त्रुटि प्रिंट करने के लिए cerr ऑब्जेक्ट का उपयोग करें।
  5. प्रोग्राम को सफल निष्पादन पर एक मान लौटाना होगा।
  6. मुख्य फ़ंक्शन के मुख्य भाग का अंत.

std::clog

क्लॉग ऑब्जेक्ट ओस्ट्रीम क्लास का एक उदाहरण है। इसका उपयोग मानक डिस्प्ले, मॉनिटर पर त्रुटियाँ दिखाने के लिए किया जाता है। यह cerr ऑब्जेक्ट के समान है, लेकिन यह बफर्ड है। चूंकि यह बफर्ड है, इसलिए यह बफर में त्रुटि संदेश को तब तक संग्रहीत करता है जब तक बफर भर/फ्लश नहीं हो जाता। इसका उपयोग स्ट्रीम इंसर्शन ऑपरेटर (<<) के साथ किया जाता है।

उदाहरण

#include <iostream>
using namespace std;
int main() {
	clog << "An Error occurred!";
	return 0;
}

आउटपुट:

std::clog

कोड का स्क्रीनशॉट यहां दिया गया है:

std::clog

Code स्पष्टीकरण:

  1. इसमें iostream हेडर फ़ाइल भी शामिल है जिसमें clog ऑब्जेक्ट परिभाषित किया गया है।
  2. std नामस्थान को शामिल करना ताकि हम इसे कॉल किए बिना इसके क्लासों का उपयोग कर सकें।
  3. main() फ़ंक्शन को कॉल करना। प्रोग्राम लॉजिक को इसके बॉडी में जोड़ा जाना चाहिए। { फ़ंक्शन के बॉडी की शुरुआत को चिह्नित करता है।
  4. मानक आउटपुट, मॉनिटर पर त्रुटि मुद्रित करने के लिए क्लॉग ऑब्जेक्ट का उपयोग करें।
  5. प्रोग्राम को सफलतापूर्वक पूरा होने पर एक मान लौटाना होगा।
  6. फ़ंक्शन main() के मुख्य भाग का अंत.

IO स्ट्रीम के साथ त्रुटि प्रबंधन

वही स्ट्रीम ऑब्जेक्ट यह भी रिपोर्ट करते हैं कि कोई ऑपरेशन सफल हुआ या नहीं, जिसका पता स्ट्रीम स्टेट चेक से चलता है।

यह जाँचने के लिए कि कोई स्ट्रीम वैध है या नहीं, आप इसका उपयोग बूलियन के रूप में कर सकते हैं।

यहाँ एक उदाहरण है:

ifstream file( "myfile.txt" );
if ( ! file )
{
        cout << "File NOT opened!" << endl;
}

स्ट्रीम स्थिति के बारे में अधिक जानकारी प्राप्त करने के लिए, आप इन फ़ंक्शन का उपयोग कर सकते हैं:

  • good()- यदि सब ठीक है तो true लौटाएगा।
  • यदि कोई घातक त्रुटि घटित होती है तो bad()- true लौटाएगा।
  • fail()- असफल स्ट्रीम ऑपरेशन के बाद true लौटाएगा.
  • eof()- यदि यह किसी फ़ाइल के अंत तक पहुँच जाता है तो true लौटाएगा।

यह जानने के लिए कि क्या कोई विशेष पठन/लेखन कार्य असफल हुआ है, पठन परिणाम का परीक्षण करें।

उदाहरण के लिए, यह जाँचने के लिए कि उपयोगकर्ता ने वैध पूर्णांक दर्ज किया है या नहीं, यह करें:

int p;
if ( cin >> p ) 
{
        cout << "Enter valid number" << endl;
}

अक्सर पूछे जाने वाले प्रश्न

cout ऑब्जेक्ट टाइप-सेफ है और इंसर्शन ऑपरेटर का उपयोग करता है, इसलिए यह प्रत्येक मान के प्रकार का स्वचालित रूप से पता लगा लेता है। C का printf %d जैसे फॉर्मेट स्पेसिफायर पर निर्भर करता है, जिन्हें आर्गुमेंट्स से मैन्युअल रूप से मिलाना पड़ता है।

भूतपूर्वtraction ऑपरेटर पहले स्पेस पर रुक जाता है, इसलिए cin केवल एक शब्द पढ़ता है। स्पेस सहित पूरी पंक्ति को पढ़ने के लिए, getline(cin, variable) फ़ंक्शन को कॉल करें, जो न्यूलाइन कैरेक्टर तक पढ़ता है।

दोनों ही नए सिरे से लाइन शुरू करते हैं, लेकिन endl हर बार आउटपुट बफर को खाली कर देता है, जिससे व्यस्त लूप धीमे हो सकते हैं। एक साधारण नई लाइन को प्राथमिकता दें और endl का उपयोग तब करें जब बफर को तुरंत खाली करना आवश्यक हो।

cin, cout, cerr और clog ऑब्जेक्ट std नेमस्पेस में मौजूद होते हैं। `using namespace std` लिखने से आप std::cout के बजाय cout टाइप कर सकते हैं। बड़े प्रोजेक्ट अक्सर टकराव से बचने के लिए स्पष्ट std उपसर्ग का उपयोग करते हैं।

iomanip हेडर को शामिल करें और cout के साथ मैनिपुलेटर का उपयोग करें। setw मैनिपुलेटर फ़ील्ड की चौड़ाई आरक्षित करता है, और setprecision यह निर्धारित करता है कि कितने अंक दिखाई देंगे, संग्रहीत मानों को बदले बिना संख्याओं और स्तंभों को स्वरूपित करता है।

जी हां। क्योंकि cout और cerr अलग-अलग स्ट्रीम हैं, इसलिए शेल सामान्य आउटपुट को एक फ़ाइल में रीडायरेक्ट कर सकता है जबकि त्रुटियां स्क्रीन पर दिखाई देती रहेंगी। कोड में, rdbuf एक स्ट्रीम को दूसरे बफर की ओर इंगित कर सकता है।

जी हां। एआई कोडिंग सहायक किसी टिप्पणी या फ़ंक्शन के नाम को पढ़कर cin और cout स्टेटमेंट, साथ ही iostream include और एक स्वरूपित प्रॉम्प्ट तैयार करते हैं। Revउत्पन्न स्ट्रीम लॉजिक में विशिष्ट परिस्थितियों की पहचान करना बुद्धिमानी भरा कार्य है।

हां. गिटहब कोपिलॉट टाइप करते समय cout फ़ॉर्मेटिंग, cin वैलिडेशन लूप और cerr त्रुटि जाँच पूरी करता है। यह 2026 है। C++ कोड इंटेलिजेंस में सिमेंटिक सिंबल अवेयरनेस शामिल होती है, जिससे मल्टी-फाइल सुझाव सुसंगत बने रहते हैं।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: