C++ में iostream Classes के साथ कंसोल को मैनेज करना

Managing Console With Iostream Classes C



कंप्यूटिंग में, कंसोल कंप्यूटर कीबोर्ड और कंप्यूटर मॉनिटर है। अतीत में, आउटपुट सीधे मॉनिटर स्क्रीन पर भेजा जाता था न कि मॉनिटर पर प्रदर्शित विंडो को। सामान्य कंप्यूटर उपयोगकर्ता के लिए, एप्लिकेशन आज मॉनीटर का स्पष्ट रूप से उपयोग नहीं करते हैं। ये एप्लिकेशन मॉनिटर पर प्रदर्शित विंडो का उपयोग करते हैं। हालाँकि, कंप्यूटर प्रोग्रामर को अभी भी मॉनिटर स्क्रीन का उपयोग करने की आवश्यकता है। हालांकि प्रोग्रामर को अभी भी मॉनिटर स्क्रीन का उपयोग करने की आवश्यकता है, ऑपरेटिंग सिस्टम उसे ऐसा करने की अनुमति नहीं देता है। ऑपरेटिंग सिस्टम एक विंडो प्रदान करता है जो मॉनिटर स्क्रीन का अनुकरण करता है। विंडोज ऑपरेटिंग सिस्टम में इस विंडो को कमांड प्रॉम्प्ट कहा जाता है। Linux ऑपरेटिंग सिस्टम और इसके वेरियंट में इस विंडो को टर्मिनल कहा जाता है।

यह उम्मीद की जाती है कि पाठक पहले से ही कमांड प्रॉम्प्ट या टर्मिनल का उपयोग करना जानता है। यह आलेख बताता है कि कीबोर्ड से वर्णों और स्ट्रिंग्स को कैसे पढ़ा जाए और वर्णों और स्ट्रिंग्स को टर्मिनल (या कमांड प्रॉम्प्ट) पर कैसे भेजा जाए। इस लेख में प्रत्येक C++ प्रोग्रामर को जानना आवश्यक है।







कीबोर्ड से इनपुट और टर्मिनल से आउटपुट प्राप्त करने के लिए, प्रोग्राम को इसके साथ शुरू करना होगा:



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

लेख सामग्री

मानक iostream की नैरो स्ट्रीम ऑब्जेक्ट

Iostream वर्ग, मानक ऑब्जेक्ट, cout, cin, cerr, और clog, को तत्काल और पहले से ही मानक पुस्तकालय में रखा गया है। प्रोग्रामर उन्हें फिर से इंस्टेंट किए बिना उनका उपयोग करता है।



लागत

मुख्य () फ़ंक्शन में निम्न कथन पाठ भेजता है, यह आउटपुट है। टर्मिनल के लिए:





लागत << 'यह आउटपुट है।';

cout मानक पुस्तकालय में एक आउटपुट iostream ऑब्जेक्ट है, जो पहले से ही तत्काल है।<< is the insertion operator, which sent the bytes, This is output. to the output stream object, cout. When the statement is executed, the text appears on the screen.

उपरोक्त कथन के साथ, पुन: प्रदर्शित कमांड प्रॉम्प्ट आउटपुट वाक्यांश के दाईं ओर दिखाई देता है। यह अगली पंक्ति में नहीं जाता है। निम्नलिखित कथन के अंत में endl स्क्रीन द्वारा जो कुछ भी मुद्रित किया जाता है उसे अगली पंक्ति में बाध्य करेगा:



लागत << 'यह आउटपुट है।' <<एंडली;

endl एक पूर्वनिर्धारित चर है। स्क्रीन सामग्री को अगली पंक्ति में भी मजबूर किया जा सकता है:

लागत << 'यह आउटपुट है।' << 'एन';

' ' के प्रयोग से, हो सकता है कि टेक्स्ट की सभी पंक्तियाँ अभी भी तुरंत स्क्रीन पर प्रकट न हों। एंडल टेक्स्ट की पूरी लाइन को स्क्रीन पर फ्लश करता है।

नोट: cout को भेजी गई स्ट्रिंग डबल कोट्स में है, जबकि भेजा गया कैरेक्टर सिंगल कोट्स में है। स्ट्रिंग्स और वर्णों की एक श्रृंखला को एक स्टेटमेंट में भेजा जा सकता है, प्रत्येक से पहले<< . All that will appear in one line at the output if ‘ ’ is not in the series.

जिन

cin मानक iostream इनपुट ऑब्जेक्ट है, जो पहले से ही त्वरित है, और मानक पुस्तकालय में उपलब्ध है। मुख्य () फ़ंक्शन में निम्नलिखित कोड खंड पर विचार करें:

charटेक्स्ट[पचास];
लागत << 'एक शब्द दर्ज करें और एंटर दबाएं:' टेक्स्ट;
लागत <<टेक्स्ट<<एंडली;

पहला कथन 50 वर्णों की एक खाली सरणी घोषित करता है। दूसरा कथन उपयोगकर्ता को अगली स्क्रीन लाइन पर एक शब्द टाइप करने और एंटर कुंजी दबाने का निर्देश देता है। 'एंडल' के उपयोग पर ध्यान दें जो उपयोगकर्ता को स्क्रीन की अगली पंक्ति में टेक्स्ट दर्ज करने के लिए मजबूर करता है। जैसे ही उपयोगकर्ता टेक्स्ट टाइप करता है, दर्ज किया गया टेक्स्ट स्क्रीन पर प्रतिध्वनित होता है, जबकि यह सिने ऑब्जेक्ट में जाता है। एंटर दबाने के बाद, कोड सेगमेंट में तीसरा स्टेटमेंट निष्पादित होता है। यह तीसरा स्टेटमेंट दर्ज किए गए टेक्स्ट को वेरिएबल, txt में भेजता है। दर्ज किया गया पाठ इस मामले में 50 वर्णों से अधिक लंबा नहीं होना चाहिए। निष्कर्षण ऑपरेटर के उपयोग पर ध्यान दें, >>। अंतिम विवरण स्क्रीन पर दर्ज टेक्स्ट प्रदर्शित करता है।

cin रिक्त स्थान से अलग करके कीबोर्ड से एक से अधिक शब्द ले सकता है। इन शब्दों को अलग-अलग चरों में निकालना होगा। निम्नलिखित कोड खंड इसे दिखाता है:

charटेक्स्ट[बीस];
NSयह;
पानी पर तैरनाफुट;
लागत << '3 मान दर्ज करें और एंटर दबाएं:' टेक्स्ट>>यह>>फुट;
लागत <<टेक्स्ट<< '' <<यह<< '' <<फुट<<एंडली;

कथन पर ध्यान दें:

जिन >>टेक्स्ट>>यह>>फुट;

पहला शब्द txt में निकाला जाता है, अगला शब्द उसके आगे, और अंतिम से ft तक। यदि इनपुट था,

एक25 3.6

तो कोड सेगमेंट द्वारा आउटपुट होगा,

एक25 3.6

सेरा

निम्न प्रोग्राम में त्रुटि है:

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

NSमुख्य()
{
myInt . में;

वापसी 0;
}

मुख्य () में पहला कथन सही नहीं है। यदि कोड वाली फ़ाइल का नाम temp.cc है और परिणामी निष्पादन योग्य फ़ाइल को अस्थायी कहा जाना है, तो निम्न g++ कमांड फ़ाइल को कंपाइलर त्रुटि संदेश भेजेगा, error.txt:

जी++ -ओ अस्थायी अस्थायी।डीसी 2>त्रुटि।टेक्स्ट

अगर फ़ाइल error.txt मौजूद नहीं है, तो इसे बनाया जाएगा। g++ कमांड के भाग 2>error.txt पर ध्यान दें।

स्क्रीन मानक आउटपुट गंतव्य है, और यह मानक त्रुटि गंतव्य भी है। अगर 2>error.txt को g++ कमांड से हटा दिया जाता है, तो कंपाइलर एरर मैसेज स्टैंडर्ड एरर डेस्टिनेशन पर भेजा जाएगा, जो अभी भी स्क्रीन (मॉनिटर) है।

मानक आउटपुट गंतव्य का प्रतिनिधित्व करने वाली स्ट्रीम ऑब्जेक्ट cout है। स्ट्रीम ऑब्जेक्ट जो मानक त्रुटि गंतव्य का प्रतिनिधित्व करता है वह cerr है। एक प्रोग्राम रनटाइम त्रुटि स्क्रीन पर निम्नानुसार भेजी जा सकती है:

सेरा << 'त्रुटि संदेश!' << 'एन';

रोकना

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

charटेक्स्ट[पचास];
लागत<<'टेक्स्ट दर्ज करें और एंटर दबाएं:'टेक्स्ट;
रोकना<<टेक्स्ट<<एंडली;

यदि इनपुट टेक्स्ट 'input_text' है, तो क्लॉग स्क्रीन पर 'input_text' को फिर से प्रदर्शित करेगा।

व्यवहार में, लॉगिंग को आमतौर पर एक फ़ाइल पर पुनर्निर्देशित किया जाता है। निम्नलिखित कार्यक्रम इसे दर्शाता है:

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

NSमुख्य()
{
फ्रीओपन( 'लॉग.txt','में',स्टडआउट);

लागत << 'इनपुट टेक्स्ट' <<एंडली;
}

फ़ंक्शन, फ़्रीओपेन (), और इसके तर्कों के उपयोग पर ध्यान दें। इसका पहला तर्क लॉग फ़ाइल का नाम है। यदि फ़ाइल मौजूद नहीं है, तो इसे बनाया जाएगा। इसका दूसरा तर्क 'लिखने' के लिए 'w' है। इसका तीसरा तर्क मानक-आउटपुट के लिए स्टडआउट है। मुख्य () फ़ंक्शन में दूसरा कथन फ़ाइल में लॉगिंग टेक्स्ट भेजने के लिए cout का उपयोग करता है। नोट: इस प्रोग्राम में वास्तविक इनपुट कोड नहीं दिखाया गया है।

कीबोर्ड से कैरेक्टर और स्ट्रिंग्स प्राप्त करना

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

सिने ऑब्जेक्ट में वे विधियां हैं, जिनसे यह खंड संबंधित है।

पहला अक्षर पढ़ना

प्राप्त करें (char_type और सी):
निम्न कोड खंड दिखाता है कि इनपुट स्ट्रीम बफर से पहले वर्ण को कैसे पढ़ा जाए:

charचौधरी;
लागत << 'इनपुट टेक्स्ट:' <<एंडली;
जिन.पाना(चौधरी);
लागत <<चौधरी<<एंडली;

पहला बयान असाइनमेंट के बिना एक चरित्र घोषित करता है। दूसरा कथन उपयोगकर्ता को एक चरित्र इनपुट करने के लिए कहता है। जब उपयोगकर्ता कैरेक्टर टाइप करता है और एंटर की दबाता है, तो तीसरा स्टेटमेंट इनपुट स्ट्रीम बफर से कैरेक्टर को वेरिएबल, ch में कॉपी करता है।

भले ही उपयोगकर्ता ने एक से अधिक वर्ण टाइप किए हों, पहला वर्ण कोड खंड द्वारा लिया जाएगा।

पाना():
get() बिना तर्क के, दशमलव ASCII कोड लौटाता है। निम्नलिखित कोड खंड पर विचार करें:

लागत << 'इनपुट टेक्स्ट:' <<एंडली;
लागत << जिन.पाना() <<एंडली;

यदि इनपुट 'asdfg' है, तो 97 वापस आ जाएगा, जो 'a' के लिए दशमलव ASCII कोड है।

प्राप्त करें (char_type * s, स्ट्रीम आकार n)

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

charपी[10];
लागत << 'इनपुट टेक्स्ट:' <<एंडली;
जिन.पाना(स्ट्र,10);
लागत <<पी<<एंडली;

यदि इनपुट 'महान लोग' है, तो आउटपुट 9 वर्णों का 'महान पीओ' होगा, न कि 10. स्ट्रिंग NUL वर्ण () प्राप्त तर्क में दसवां स्थान लेता है। तो, str में 9 अक्षर होने के लिए, इसका भंडारण आकार कम से कम 10 होना चाहिए, और get() तर्क 11 होना चाहिए। यदि संपूर्ण इनपुट लाइन वांछित है, तो स्ट्रिंग स्टोरेज संख्या कम से कम संख्या होनी चाहिए टाइप किए गए वर्णों की संख्या, प्लस 1. इसलिए, यदि पूरी पंक्ति के लिए 12 वर्ण टाइप किए गए हैं, तो स्ट्रिंग (str) भंडारण आकार के लिए संख्या 13 और get() तर्क के लिए 13 होनी चाहिए। ध्यान दें कि एक स्थान को एक वर्ण के रूप में गिना जाता है।

get(char_type* s, streamsize n, char_type delim)
किसी विशेष वर्ण की पहली घटना से, या उप-स्ट्रिंग के स्ट्रीमसाइज द्वारा, जो भी पहले आता है, दाईं ओर सीमांकित उप-स्ट्रिंग को निकालना संभव है। यदि निम्नलिखित कोड में इनपुट टेक्स्ट महान लोग हैं, तो महान निकाला जाएगा:

charपी[30];
लागत << 'इनपुट टेक्स्ट:' <<एंडली;
जिन.पाना(स्ट्र,6,'या');
लागत <<पी<<एंडली;

शुरुआत से छठा स्थान स्पेस कैरेक्टर है, और यह विशेष रूप से निकाले गए सबस्ट्रिंग को सीमित करता है। छठा स्थान एकमात्र वर्ण 'ओ' से पहले आता है। ध्यान दें कि str के लिए संग्रहण आकार जितना संभव हो उतना अधिक हो सकता है।

यदि निम्नलिखित कोड का इनपुट टेक्स्ट महान लोग हैं, तो जीआर निकाला जाएगा:

charपी[30];
लागत << 'इनपुट टेक्स्ट:' <<एंडली;
जिन.पाना(स्ट्र,10,'और');
लागत <<पी<<एंडली;

'ई' की पहली घटना दसवें स्थान से पहले आती है।

एक पंक्ति के सभी वर्ण प्राप्त करना

एंटर कुंजी दबाने के बाद, लाइन में टाइप किए गए सभी वर्ण, निम्न कोड में दिखाए गए अनुसार प्राप्त किए जा सकते हैं:

लागत << 'इनपुट टेक्स्ट:' <<एंडली;
जबकि (1) {
charचौधरी= (char)जिन.पाना();
लागत <<चौधरी;
अगर (चौधरी== 'एन')
टूटना;
}

(चार) के साथ कास्टिंग, प्रत्येक दशमलव संख्या को संबंधित ASCII वर्ण में परिवर्तित करता है।

झांकना ()

प्राप्त () सदस्य फ़ंक्शन न केवल अगले वर्ण को पढ़ते हैं; वे इसे स्ट्रीम बफर से हटा देते हैं। हालाँकि, पीक () सदस्य फ़ंक्शन सरल अगले वर्ण (पहले से शुरू) को बफर से हटाए बिना पढ़ता है। निम्नलिखित कोड में, प्रत्येक वर्ण को पहले get() फ़ंक्शन द्वारा हटाए जाने से पहले पीक () फ़ंक्शन के साथ पढ़ा जाता है। उपयोगकर्ता द्वारा एंटर कुंजी दबाए जाने के बाद जो कुछ होता है:

लागत << 'इनपुट टेक्स्ट:' <<एंडली;
जबकि (1) {
charचौधरी= (char)जिन.तिरछी();
लागत <<चौधरी;
जिन.पाना();
अगर (चौधरी== 'एन')
टूटना;
}

यदि अगले वर्णों को प्राप्त () द्वारा नहीं हटाया गया था, तो झांकना () केवल पहले वर्ण को पढ़ रहा होगा, और लूप अनिश्चित काल तक पुनरावृत्त होगा।

एंटर दबाने से पहले कैरेक्टर को डिस्प्ले और डिलीट करना

ध्यान दें कि सिन ऑब्जेक्ट के साथ, कार्रवाई होने से पहले एंटर कुंजी को दबाया जाना है। खैर, एंटर कुंजी दबाने से पहले टाइप किए जाने और मिटाए जाने के दौरान वर्णों को प्रदर्शित करना संभव है। हालांकि, इसका मतलब ऑपरेटिंग सिस्टम के साथ इंटरफेस करना है। ऑपरेटिंग सिस्टम अलग हैं। तो इसका मतलब है अलग-अलग ऑपरेटिंग सिस्टम के लिए अलग-अलग कोडिंग। तो यह विषय एक पूरी तरह से अलग ट्यूटोरियल का हकदार है - बाद में देखें।

मॉनिटर को कैरेक्टर और स्ट्रिंग्स भेजना

कोउट ऑब्जेक्ट एक आउटपुट स्ट्रीम ऑब्जेक्ट है, जो पहले से ही तत्काल है और सी ++ मानक पुस्तकालय में मौजूद है। cout मुख्य वस्तु है जिसका उपयोग मॉनिटर पर वर्ण और तार भेजने में किया जाता है। यह सम्मिलन ऑपरेटर के साथ किया जाता है,<< . With the cin object, the text is obtained line-by-line. With the cout object, the text is added onto the same line until ‘ ’ or endl is encountered.

अदिश में परिणामित व्यंजक सम्मिलन ऑपरेटर के लिए तर्क हो सकते हैं। ऑपरेटर स्केलर को टेक्स्ट में कनवर्ट करता है और टेक्स्ट को कॉउट ऑब्जेक्ट स्ट्रीम में रखता है। जब पाठ कोउट ऑब्जेक्ट को भेजा जाता है, तो यह सामान्य रूप से स्क्रीन (मॉनिटर) पर दिखाई देता है। हालाँकि, कभी-कभी, यह तुरंत प्रकट नहीं हो सकता है। स्क्रीन पर जबरन टेक्स्ट करने के लिए, टेक्स्ट डालने के ठीक बाद, विशेष मान, एंडल डालें। इससे टेक्स्ट स्क्रीन पर फ़्लश हो जाएगा और एक नई लाइन जोड़ी जाएगी। नोट: ' ' बस एक नई लाइन जोड़ता है लेकिन स्क्रीन पर टेक्स्ट फ्लश नहीं करता है।

निम्न प्रोग्राम दिखाता है कि स्क्रीन पर इंट, फ्लोट और साधारण टेक्स्ट के मानों को कैसे प्रिंट किया जाए:

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

NSमुख्य()
{
NSयह= 5;
पानी पर तैरनाफुट= 63.5;
लागत << 'NS ' <<यह<< 'वस्तुओं की कीमत $' <<फुट<< ' हम।' <<एंडली;

वापसी 0;
}

आउटपुट है:

NS5आइटम की कीमत $63.5हम।

निम्न प्रोग्राम दिखाता है कि किसी वर्ग से तत्काल किसी ऑब्जेक्ट की स्ट्रिंग कैसे मुद्रित की जाती है:

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

structअनुसूचित जनजाति{
charपी[ग्यारह] = 'कुछ शब्द';
}ओब्जो;

NSमुख्य()
{
लागत <<ओबीजेपी << 'एन';

वापसी 0;
}

आउटपुट 'कुछ शब्द' है।

C++ प्रोग्राम के लिए तर्क

कार्यक्रम का निष्पादन मुख्य () फ़ंक्शन से शुरू होता है। मुख्य () फ़ंक्शन में वास्तव में दो वैकल्पिक पैरामीटर होते हैं। वैकल्पिक मापदंडों के साथ मुख्य () फ़ंक्शन का सिंटैक्स है:

NSमुख्य(NSआर्गसी,char *अर्जीवी[एर्गसी])
{

वापसी 0;
}

मान लें कि निष्पादन योग्य C++ फ़ाइल का नाम अस्थायी है। मान लें कि प्रोग्राम को अपने परिवेश (ऑपरेटिंग सिस्टम) से उपयोगकर्ता द्वारा टाइप किए गए तर्कों की आवश्यकता है,

सामग्री3किताब कलम'बड़ा घर'

यहां 5 तर्क हैं: लेख, 3, किताब, कलम, और बड़ा घर

प्रत्येक पाठ है। एक प्रोग्राम के लिए एक क्रमांकित तर्क पाठ है। दूसरे शब्दों में, प्रत्येक तर्क एक स्ट्रिंग है। बड़ा घर उद्धरणों में है क्योंकि यह एक मुहावरा है। इस प्रोग्राम को चलाने के लिए टर्मिनल कमांड होगी:

./अस्थायी लेख3किताब कलम'बड़ा घर'

यह मानते हुए कि फ़ाइल अस्थायी होम निर्देशिका में है। ध्यान दें कि रिक्त स्थान और अल्पविराम तर्कों को अलग नहीं करते हैं।

अब, मुख्य () फ़ंक्शन सिंटैक्स में, argc प्रोग्राम के लिए तर्कों की संख्या है, प्लस १। इस मामले में, प्रोग्राम के लिए ५ तर्क हैं। तो, argc 6 है। सिंटैक्स में, argv[argc] स्ट्रिंग्स के लिए पॉइंटर्स की एक सरणी है। argv[0] पर इस सरणी के लिए पहला मान संकलक द्वारा दिया गया है। यह प्रोग्राम फ़ाइल के नाम का सूचक है। शेष मान टाइप किए गए उपयोगकर्ता के क्रम में प्रोग्राम तर्कों के सूचक हैं। इस सरणी का आकार argc है। इस मामले में आकार 1 + 5 = 6 है।

मान लें कि संकलन के समय, निम्न प्रोग्राम को अस्थायी नाम दिया गया है:

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

NSमुख्य(NSआर्गसी,char**अर्जीवी)
{

लागत <<अर्जीवी[0] << ',' <<अर्जीवी[1] << ',' <<अर्जीवी[2] << ',' <<अर्जीवी[3] << ',' <<अर्जीवी[4] << ',' <<अर्जीवी[5] <<एंडली;

वापसी 0;
}

यहां ध्यान दें, कि सरणी 'char *argv[argc]', को 'char** argv' घोषित किया गया है।

यदि यह प्रोग्राम टर्मिनल कमांड के साथ चलाया जाता है,

./अस्थायी लेख3किताब कलम'बड़ा घर'

तो आउटपुट होगा:

./अस्थायी, लेख,3, किताब, कलम, बड़ा घर

ध्यान दें कि निर्देशिका पथ को निष्पादन योग्य फ़ाइल के नाम के साथ शामिल किया गया है।

साथ ही, ध्यान दें कि प्रोग्राम चलाने (प्रोग्राम को कॉल करने) में, argc का मान नहीं भेजा गया है।

निष्कर्ष

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