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

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

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

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

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

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

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

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

  1. सबसे पहले, स्ट्रीम को सही प्रकार से आरंभ किया जाता है।
  2. इसके बाद, आपको यह बताना चाहिए कि कहां मैं / हे get/put पॉइंटर्स का उपयोग करके घटित होगा।
  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;
}

सारांश

  • इनपुट और आउटपुट कार्य C++ बाइट अनुक्रम के माध्यम से किया जाता है। बाइट्स को स्ट्रीम कहा जाता है।
  • इनपुट स्ट्रीम में, बाइट्स कीबोर्ड जैसे इनपुट डिवाइस से मुख्य मेमोरी तक प्रवाहित होते हैं।
  • आउटपुट स्ट्रीम में, बाइट्स मुख्य मेमोरी से मॉनिटर जैसे आउटपुट डिवाइस तक पहुंचते हैं।
  • cin ऑब्जेक्ट istream क्लास का एक उदाहरण है। यह कीबोर्ड जैसे इनपुट डिवाइस से इनपुट पढ़ता है।
  • cout ऑब्जेक्ट ostream क्लास का एक उदाहरण है। यह मॉनिटर जैसे आउटपुट डिवाइस पर आउटपुट उत्पन्न करता है।
  • cerr ऑब्जेक्ट ostream क्लास का एक उदाहरण है। यह मॉनिटर पर त्रुटि ऑब्जेक्ट प्रदर्शित करता है।
  • क्लॉग ऑब्जेक्ट ओस्ट्रीम क्लास का उदाहरण है। यह आउटपुट डिवाइस पर त्रुटि संदेश प्रदर्शित करता है।
  • क्लॉग ऑब्जेक्ट त्रुटि संदेशों को बफर करता है, जबकि सेर ऑब्जेक्ट ऐसा नहीं करता है।

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