सी++ आईस्ट्रीम फंक्शन्स

Si A Istrima Phanksansa



सी ++ में 'स्ट्रीम' शब्द प्रोग्राम थ्रेड और i/o के बीच वर्णों के प्रवाह का वर्णन करता है। आईओ उपकरणों और फाइलों पर इनपुट और आउटपुट क्रियाओं के लिए सी ++ स्ट्रीम कक्षाओं की आवश्यकता होती है। इन वर्गों को प्रोग्राम के इनपुट और आउटपुट को प्रबंधित करने के लिए डिज़ाइन किया गया है और उनकी विशेष कार्यक्षमता है।

स्ट्रीम क्लास पदानुक्रम

एक सी ++ वर्ग में शामिल डेटा को प्रबंधित और नियंत्रित करने के लिए आवश्यक विधियों से बना है।

फ्लोट, डबल्स और क्लासेस इंट के समान डेटा प्रकार हैं। डेटा प्रकार के रूप में एक वर्ग के साथ एक अद्वितीय चर को C++ ऑब्जेक्ट के रूप में संदर्भित किया जाता है। पूर्व-निर्दिष्ट विशेष वस्तुओं 'सिन' और 'कोउट' में उनके डेटा प्रकार के रूप में विभिन्न वर्ग हैं।







'cout' को लिखा गया डेटा या 'cin' से पढ़ा गया डेटा C++ में प्रोग्राम में या उसके बाहर डेटा प्रवाह के उदाहरण हैं। वर्तमान में, हम इसके लिए निम्नलिखित चार वर्गों पर विचार कर रहे हैं:



इसे स्ट्रीम करें
इस इनपुट स्ट्रीम द्वारा किसी भी उद्देश्य की पूर्ति की जा सकती है। एक आईट्रीम का एक उदाहरण सिन है।



ओस्ट्रीम
यह कई उपयोगों के साथ एक आउटपुट स्ट्रीम है। ओस्ट्रीम कॉउट और सीन के रूप में आते हैं।





अगर धारा
यह इनपुट फाइलों की एक धारा है।

धारा का
यह आउटपुट फाइलों की एक धारा है। वंशानुक्रम एक ऐसी धारणा है जिसका उपयोग वस्तु-उन्मुख प्रोग्रामिंग में बहुत अधिक किया जाता है, जैसे कि C ++ में, जहां कुछ वर्ग अन्य वर्गों की विशेषताओं को लेते हैं जो पहले से ही बनाए जा चुके हैं। पूर्वज वर्ग तब नई सुविधाओं के समावेश के माध्यम से स्वयं के विशेषज्ञ बन जाते हैं।



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

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

आईओएस वर्ग
इस वर्ग से, सभी धारा वर्ग उतरे। इनपुट और आउटपुट स्ट्रीम दो अलग-अलग प्रकार के होते हैं।

यह उन स्ट्रीम भागों को परिभाषित करता है जो ios बेस में स्ट्रीम के इनपुट या आउटपुट स्थिति से स्वतंत्र होते हैं।

आईओएस बेस में चर्चा किए गए सदस्यों के विपरीत, टेम्पलेट पैरामीटर पर निर्भर सदस्यों को इस भाग में वर्णित किया गया है।

स्ट्रीम (इनपुट)
iostream लाइब्रेरी की जटिलता के कारण, हम इसे इन पाठों में पूरी तरह से कवर नहीं कर पाएंगे। हालांकि, हम सबसे अधिक उपयोग किए जाने वाले कार्यों को हाइलाइट करेंगे। इस खंड में, हम विभिन्न कोणों (istream) से इनपुट वर्ग को देखेंगे।

हमने सीखा है कि एक्सट्रैक्शन ऑपरेटर (>>) का उपयोग इनपुट स्ट्रीम से डेटा प्राप्त करने के लिए किया जाएगा।

धारा

सी ++ प्रोग्रामिंग भाषा में, इनपुट स्ट्रीम को आईस्ट्रीम क्लास द्वारा नियंत्रित किया जाता है। इनपुट को इन इनपुट स्ट्रीम ऑब्जेक्ट्स का उपयोग करके वर्णों की एक श्रृंखला के रूप में पढ़ा और समझा जाता है। इनपुट को cin द्वारा नियंत्रित किया जाता है।

सदस्य वर्ग

आईस्ट्रीम :: संतरी
एक वर्ग जो कई कार्य करता है और हर बार एक इनपुट प्रक्रिया की जाती है। इसके विनाशक को किसी भी क्रिया को करने की आवश्यकता नहीं है। हालाँकि, कार्यान्वयन अतिरिक्त स्टार्टअप या क्लीनअप कार्यों को सभी इनपुट कार्यों द्वारा साझा की गई स्ट्रीम पर संतरी वस्तुओं के निर्माण और विनाश का उपयोग करके निष्पादित कर सकता है।

कार्यों

आईस्ट्रीम :: जीकाउंट
ऑब्जेक्ट की सबसे हाल ही में बिना स्वरूपित इनपुट क्रिया से प्राप्त की गई वर्ण गणना देता है। गैर-स्वरूपित इनपुट प्रक्रियाएं- प्राप्त करें, गेटलाइन, अनदेखा करें, झांकें, पढ़ें, कुछ पढ़ें, पुटबैक, और अनगेट- इस फ़ंक्शन द्वारा लौटाए गए मान को बदलें। हालांकि, ध्यान रखें कि पीकिंग, पुटबैक, या अनगेट को कॉल करने से कोई कैरेक्टर एक्सट्रेक्ट नहीं होता है। नतीजतन, गिनती हमेशा 0 लौटाएगी।

आईस्ट्रीम :: प्राप्त करें
एकल चरित्र एक चरित्र को धारा से बाहर ले जाता है। वर्ण या तो तर्क के मान के रूप में सेट किया गया है या लौटाया गया है (पहला हस्ताक्षर) (दूसरा हस्ताक्षर)।

सी स्ट्रिंग: यदि परिसीमन वर्ण मौजूद है, तो इसे इनपुट अनुक्रम से हटाया नहीं जाता है, इसके बजाय निम्न वर्ण के रूप में रखा जाता है यदि यह मौजूद है तो स्ट्रीम से पुनर्प्राप्त किया जा सकता है।

आईस्ट्रीम :: गेटलाइन
स्ट्रीम से वर्णों को बिना स्वरूपित इनपुट के रूप में हटाता है और उन्हें चर 's' में c-स्ट्रिंग के रूप में सहेजता है जब तक कि निकाला गया वर्ण परिसीमन वर्ण नहीं बन जाता है या 'n' वर्ण 's' को लिखे जाते हैं। इसके अतिरिक्त, यदि यह फ़ाइल के अंत तक पहुँचती है, तो विधि वर्ण निकालना बंद कर देगी।

आंतरिक रूप से, फ़ंक्शन इनपुट अनुक्रम तक पहुँचने से पहले एक ऑब्जेक्ट बनाता है। अंत में, यह लौटने से पहले ऑब्जेक्ट को मारता है, इसके संबंधित स्ट्रीम बफर ऑब्जेक्ट से वर्ण निकालता है (यह मानते हुए कि सब कुछ क्रम में है) जैसे कि इसके सदस्य विधियों में से एक को निष्पादित करना, sbumpc या sgetc।

आईस्ट्रीम :: इग्नोर
वर्णों को इनपुट अनुक्रम से लिया जाता है और एक समय में एक को तब तक छोड़ दिया जाता है जब तक कि या तो 'n' वर्णों को बाहर नहीं कर दिया जाता है या एक की तुलना परिसीमन के बराबर नहीं कर दी जाती है। इसके अतिरिक्त, यदि फ़ाइल के अंत तक पहुँच जाता है, तो फ़ंक्शन वर्ण निष्कर्षण को रोक देता है। फ़ंक्शन 'ईओफ़बिट' ध्वज सेट करता है यदि यह बहुत जल्द इस बिंदु पर पहुंच जाता है (एन वर्ण निकालने या डेलीम की खोज करने से पहले)।

इनपुट अनुक्रम तक पहुँचने से पहले, फ़ंक्शन आंतरिक रूप से एक संतरी वस्तु का निर्माण करता है (साथ में noskipws सत्य होगा)। अंत में, यह लौटने से पहले संतरी वस्तु को मारता है, इसके संबंधित स्ट्रीम बफर ऑब्जेक्ट से वर्ण निकालता है (यह मानते हुए कि सब कुछ क्रम में है) जैसे कि इसके सदस्य विधियों में से एक को निष्पादित करना: sbumpc या sgetc।

आईस्ट्रीम :: ऑपरेटर >>
निष्कर्षण ऑपरेटर (>>) इस ऑपरेटर को एक इनपुट स्ट्रीम पर लागू करता है। इसमें एक समारोह के रूप में बहुत सारे सदस्य हैं।

अंकगणित प्रकार

वर्णों को स्ट्रीम से बाहर ले जाया जाता है और सही प्रकार के मान का प्रतिनिधित्व करने के लिए क्रमिक रूप से पार्स किया जाता है, जिसे बाद में 'वैल' के मान के रूप में सहेजा जाता है। इनपुट अनुक्रम तक पहुँचने से पहले, फ़ंक्शन आंतरिक रूप से एक संतरी वस्तु का निर्माण करता है (noskipws गलत होगा)। यदि सब कुछ अच्छी तरह से जांचता है, तो यह धारा के आंतरिक राज्य झंडे को संशोधित करते हुए निष्कर्षण और पार्सिंग प्रक्रियाओं को पूरा करने के लिए num get::get चलाता है। संतरी वस्तु अंततः उसके जाने से पहले नष्ट हो जाती है।

इनपुट अनुक्रम को पढ़ने से पहले फ़ंक्शन आंतरिक रूप से एक संतरी वस्तु उत्पन्न करता है, इसे स्वरूपित इनपुट के रूप में देखा जाता है। अंत में, यह लौटने से पहले संतरी वस्तु को मारता है, इसके संबंधित स्ट्रीम बफर ऑब्जेक्ट से वर्ण निकालता है (यह मानते हुए कि सब कुछ क्रम में है) जैसे कि इसके सदस्य विधियों में से एक को निष्पादित करना, sbumpc या sgetc।

बाजुओं

पीएफ (* यह) कहा जाता है, जहां पीएफ एक जोड़तोड़ हो सकता है। मैनिपुलेटर नियमित रूप से बनाए जाते हैं जिन्हें विशेष रूप से तब बुलाया जाता है जब इस ऑपरेटर को बुलाया जाता है। इनपुट अनुक्रम इस प्रक्रिया से अप्रभावित रहता है और कोई वर्ण नहीं निकाला जाता है।

आईस्ट्रीम :: पुटबैक
रिस्टोर किया गया कैरेक्टर कर्सर को स्ट्रीम में एक कैरेक्टर के नीचे ले जाने का प्रयास करता है ताकि स्ट्रीम से प्राप्त अंतिम कैरेक्टर एक बार फिर इनपुट ऑपरेशंस द्वारा निकाला जा सके।

इनपुट अनुक्रम तक पहुँचने से पहले, फ़ंक्शन आंतरिक रूप से एक संतरी वस्तु का निर्माण करता है। इसके बाद यह अपने संबंधित स्ट्रीम बफर ऑब्जेक्ट (यदि अच्छा हो) पर sputbackc(c) को कॉल करता है। संतरी वस्तु अंततः उसके जाने से पहले नष्ट हो जाती है।

आईस्ट्रीम :: पढ़ें
डेटा ब्लॉक पढ़ें:

'एन' वर्णों को स्ट्रीम से लिया जाता है और फिर 'एस' द्वारा इंगित सरणी में संग्रहीत किया जाता है। यह फ़ंक्शन केवल डेटा की सामग्री का निरीक्षण किए बिना या अंत में एक अशक्त वर्ण जोड़े बिना डेटा के एक ब्लॉक को दोहराता है।

फ़ंक्शन के भीतर, इनपुट अनुक्रम तक पहुँचने से पहले एक संतरी वस्तु पहले बनाई जाती है। अंत में, यह लौटने से पहले संतरी वस्तु को मारता है, इसके संबंधित स्ट्रीम बफर ऑब्जेक्ट से वर्ण निकालता है (यह मानते हुए कि सब कुछ क्रम में है) जैसे कि इसके सदस्य विधियों में से एक को निष्पादित करना: sbumpc या sgetc।

कॉलिंग सदस्य संख्या इस फ़ंक्शन द्वारा ठीक से पढ़े और संग्रहीत वर्णों की कुल संख्या लौटाएगी।

आईस्ट्रीम::रीडसम
यह फ़ंक्शन स्ट्रीम से जुड़े विशिष्ट स्ट्रीम बफर ऑब्जेक्ट के आंतरिक कामकाज पर निर्भर है, जिसका व्यवहार मानक वर्गों के लिए बड़े पैमाने पर कार्यान्वयन-परिभाषित है।

फ़ंक्शन के भीतर, इनपुट अनुक्रम तक पहुँचने से पहले एक संतरी वस्तु पहले बनाई जाती है। फिर (यदि सफल हो), यह स्ट्रीम बफर ऑब्जेक्ट के लाभ में सदस्य फ़ंक्शन को यह निर्धारित करने के लिए कॉल करता है कि 'sbumpc' को कॉल करने से पहले वर्णों की संख्या (या sgetc) तक निकालने के लिए कितने वर्ण उपलब्ध हैं। संतरी वस्तु अंततः उसके जाने से पहले नष्ट हो जाती है।

आईस्ट्रीम :: सीकेजी
इनपुट लाइन में स्थिति निर्धारित करती है कि इनपुट स्ट्रीम से निम्नलिखित वर्ण कहाँ खींचा जाएगा। इनपुट अनुक्रम को पढ़ने से पहले, फ़ंक्शन आंतरिक रूप से एक संतरी वस्तु का निर्माण करता है। फिर (यदि ठीक है), यह संबंधित स्ट्रीम बफर ऑब्जेक्ट को दो में से एक कॉल करता है: pubseekpos (1) या pubseekoff (2), (यदि कोई हो)। अंत में, यह संतरी वस्तु को मिटा देता है और चला जाता है।

आईस्ट्रीम :: सिंक
इनपुट बफर संरेखित करें:

लिंक किए गए स्ट्रीम बफ़र के नियंत्रित इनपुट अनुक्रम को सिंक में लाता है। स्ट्रीम से जुड़े स्ट्रीम बफर ऑब्जेक्ट का विशिष्ट कार्यान्वयन ऑपरेशन की बारीकियों को निर्धारित करता है।

आईस्ट्रीम :: बताओ
इनपुट अनुक्रम की स्थिति प्राप्त करें:

यह इनपुट स्ट्रीम में वर्तमान चरित्र की स्थिति देता है। फ़ंक्शन फिर -1 देता है। यदि सदस्य विफल रहता है, तो यह सच हो जाता है।

यह rdbuf() -> pubseekoff लौटाता है यदि नहीं (0, cur,in)। संतरी वस्तु अंततः उसके जाने से पहले नष्ट हो जाती है।

istream::unget
चरित्र निकालें:

स्ट्रीम में एक वर्ण के नीचे कर्सर ले जाने का प्रयास करता है ताकि स्ट्रीम से प्राप्त अंतिम वर्ण एक बार फिर इनपुट ऑपरेशन द्वारा निकाला जा सके।

गैर - सदस्य

ऑपरेटर >> (आईस्ट्रीम)
निष्कर्षण ऑपरेटर (>>) इनपुट स्ट्रीम पर लागू होने पर इस क्रिया के साथ स्वरूपित इनपुट प्रदान करता है।

एक वर्ण: वर्ण अनुक्रम इसमें से अगले वर्ण को निकालता है और इसे 'c' के मान के रूप में संग्रहीत करता है। वर्णों को निकालने की प्रक्रिया है और उन्हें सी-स्ट्रिंग के रूप में एस में संग्रहीत करना बंद हो जाता है (यदि चौड़ाई शून्य नहीं है) जब एक व्हाइटस्पेस वर्ण का सामना करना पड़ता है या (चौड़ाई () -1) वर्ण निकाले जाते हैं।

रावल्यू का निष्कर्षण: रावल्यू आईस्ट्रीम ऑब्जेक्ट्स से निकालने में सक्षम बनाता है, जिसका परिणाम अंतराल से निकालने के समान होता है: यह कॉल>> वैल है।

उदाहरण 1

इस मामले में, हम जांच करेंगे कि हम उपयोगकर्ता से कोई मूल्य कैसे प्राप्त कर सकते हैं और फिर इसे स्क्रीन पर परिणाम के रूप में प्रदर्शित कर सकते हैं।

#शामिल करें
का उपयोग करते हुए नाम स्थान कक्षा ;
पूर्णांक मुख्य ( )
{
पूर्णांक नहीं ;
अदालत << 'एक संख्या दर्ज करें ' ;
खाना >> नहीं ;
अदालत << 'दर्ज किया गया मान है:' << नहीं << ' \एन ' ;
}

हम हेडर फाइल शामिल करेंगे। इसके बाद, हम मानक नाम स्थान में नाम स्थान 'std' का उपयोग करेंगे। हम फ़ंक्शन को मुख्य () कहते हैं। इस पद्धति के भीतर 'नहीं' नामक एक चर घोषित किया जाएगा। इस चर के लिए 'int' डेटा प्रकार का प्रतिनिधित्व किया जाता है। शब्द 'Int' एक पूर्णांक का संक्षिप्त नाम है। बाद में, 'कोउट' कथन का प्रयोग किया जाता है। यह आदेश लाइन को प्रिंट करता है।

इस पाठ के स्क्रीन पर प्रदर्शित होने के बाद उपयोगकर्ता किसी भी यादृच्छिक मान को इनपुट करेगा। फिर, 'सिने' कथन का उपयोग किया गया होगा। इस आदेश के लिए उपयोगकर्ता को मान इंगित करने की आवश्यकता होती है। उपयोगकर्ता का दर्ज किया गया नंबर एक चर में सहेजा जाएगा। उपयोगकर्ता द्वारा प्रदान किया गया मान 'cout' कमांड का उपयोग करके स्क्रीन पर प्रदर्शित किया जाएगा।

उदाहरण 2

इस उदाहरण में, हम देखेंगे कि हम उपयोगकर्ता से कोई नाम कैसे प्राप्त करते हैं और फिर इसे स्क्रीन पर परिणाम के रूप में दिखाते हैं।

#शामिल करें
का उपयोग करते हुए नाम स्थान कक्षा ;

पूर्णांक मुख्य ( )

{

चारो नाम [ 125 ] ;
अदालत << 'अपना नाम दर्ज करें' << एंडली ;


खाना >> डब्ल्यूएस ;

खाना . लाइन में आओ ( नाम, 125 ) ;

अदालत << नाम << एंडली ;

वापसी 0 ;

}

हम हेडर फ़ाइल शामिल करेंगे। इसके बाद, हम मानक नाम स्थान को 'std' के रूप में उपयोग करेंगे। हम मुख्य () फ़ंक्शन को लागू करेंगे। इस पद्धति के भीतर, हम एक चर घोषित करेंगे। यह चर 'चार' डेटा प्रकार रखता है। फिर 'कोउट' कथन कार्यरत है। यह कमांड स्क्रीन पर 'अपना नाम दर्ज करें' टेक्स्ट दिखाता है। इस टेक्स्ट को स्क्रीन पर प्रदर्शित करने के बाद, उपयोगकर्ता कोई भी नाम दर्ज करेगा। फिर, हम 'cin' कथन का उपयोग करेंगे।

यह कमांड यूजर से वैल्यू लेता है। प्रदान किया गया नाम एक चर 'ws' में संग्रहीत किया जाएगा। यहाँ, एक बार फिर, हम 'cin' कमांड का उपयोग करेंगे। इस कमांड के भीतर, गेटलाइन () फ़ंक्शन लागू किया जा रहा है। इस फ़ंक्शन में वह पैरामीटर होता है जिसमें उपयोगकर्ता द्वारा दर्ज किया गया नाम और नाम की लंबाई शामिल होती है। उपयोगकर्ता द्वारा प्रदान किया गया नाम दिखाने के लिए 'cout' कमांड का उपयोग किया जाएगा। कोड को समाप्त करने के लिए, 'रिटर्न 0' कमांड का उपयोग किया जाएगा।

निष्कर्ष

सबसे पहले, हमने बात की कि C++ istream फंक्शन क्या है। फिर हम उल्लिखित कई कार्यों और महत्वपूर्ण परिभाषाओं का निरीक्षण करते हैं। इस लेख में, हमने विभिन्न कोड चलाए हैं जिनमें विभिन्न प्रकार के आईस्ट्रीम फ़ंक्शन शामिल हैं। पहले कोड में हम यूजर से कोई भी नंबर लेते हैं और उस नंबर को स्क्रीन पर डिस्प्ले करते हैं। दूसरे में, उपयोगकर्ता ने नाम दर्ज किया और स्क्रीन पर उस नाम को मुद्रित किया।