सी ++ स्ट्रिंग लिटरल का उपयोग कैसे करें

How Use C String Literal



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

अक्षर शाब्दिक

एक अक्षर शाब्दिक एकल उद्धरणों में एक चरित्र है। इसलिए,







charपहचान १= 'प्रति'; charपहचान २= 'बी'; charपहचान3= '4'; charपहचान4= '6';

पात्रों की सभी अलग-अलग परिभाषाएं हैं। ध्यान दें कि सिंगल कोट्स में एक अंक एक वर्ण है और पूर्णांक नहीं है।



एस्केप सीक्वेंस जैसे (नीचे देखें) सिंगल कोट्स में, एक कैरेक्टर है। इसलिए,



charपहचान १= '' ';

एक चरित्र है।





दोहरे उद्धरण चिह्नों में एक एकल प्रतीक वर्ण नहीं है; यह एक वर्ण की एक स्ट्रिंग है। तो ए या सी या 2 एक वर्ण नहीं है बल्कि प्रत्येक एक वर्ण की एक स्ट्रिंग है।

एक चर के चर को फिर से सौंपा जा सकता है, बाद में कार्यक्रम में निम्नानुसार है:



charअध्यक्ष= 'एक्स';
अध्यक्ष= 'तथा';

एक पहचानकर्ता को दिए गए चरित्र को बदलने से रोकने के लिए, बाद में कार्यक्रम में, आरक्षित शब्द, कॉन्स्ट के साथ परिभाषा से पहले निम्नानुसार है:

स्थिरांक charअध्यक्ष= 'डी';

चर, पहचान को केवल-पढ़ने के लिए कहा जाता है।

शाब्दिक स्ट्रिंग

एक स्ट्रिंग शाब्दिक दोहरे उद्धरण चिह्नों में वर्णों का एक क्रम है। इसलिए,

charपहचान १[] = 'मैं तुमसे प्यार करता हूँ'; charपहचान २[] = 'मैं आप में से 3 से नफरत करता हूं'; charपहचान3[]
= 'हम दुनिया हैं'; charपहचान4[] = 'नमस्ते दुनिया!';

स्ट्रिंग अक्षर की सभी अलग-अलग परिभाषाएं हैं। दोहरे उद्धरण चिह्नों के उपयोग पर ध्यान दें। एक स्ट्रिंग के लिए सामान्य चर जैसा कुछ नहीं है। एक स्ट्रिंग अक्षर वर्णों की एक सरणी है, जहां {} के साथ परिसीमन करने के बजाय, अनुक्रम को सीमांकित किया जाता है। वर्ण अल्पविराम से अलग नहीं होते हैं। स्ट्रिंग अक्षर में वर्णों की संख्या से अधिक कोई भी संख्या वर्ग कोष्ठक में रखी जा सकती है। हालांकि, वर्गाकार कोष्ठकों को खाली छोड़ना बेहतर है।

दोहरे उद्धरण चिह्नों में एक एकल वर्ण वर्ण नहीं है; यह एक वर्ण की एक स्ट्रिंग है। तो ए या सी या 2 एक वर्ण नहीं है, बल्कि प्रत्येक एक वर्ण की एक स्ट्रिंग है।

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

कैरेक्टर या लिटरल में सिंगल और डबल कोट

एक चरित्र के रूप में एक ही उद्धरण रखने के लिए, कुछ ऐसा करें,

charअध्यक्ष= ' '';

एक स्ट्रिंग अक्षर में एक चरित्र के रूप में दोहरा उद्धरण रखने के लिए, कुछ ऐसा करें,

charअध्यक्ष[] = 'दूर'सीडी';

बैकस्लैश का उपयोग एस्केप सीक्वेंस में किया जाता है, ताकि डिलीमीटर के साथ संघर्ष से बचा जा सके। चरित्र के रूप में दोहरा उद्धरण रखने के लिए, बैकस्लैश की कोई आवश्यकता नहीं है: '' ठीक है। एक स्ट्रिंग अक्षर में एक उद्धरण रखने के लिए, बैकस्लैश की कोई आवश्यकता नहीं है: ab'cd ठीक है।

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

निकास का क्रम

भागने का क्रम इनमें से एक है:

''? \ प्रति बी एफ एन आर>टी v

प्रत्येक एस्केप सीक्वेंस को आम तौर पर सिंगल कोट्स के भीतर एक कैरेक्टर के रूप में या डबल-कोट्स के भीतर एस्केप सीक्वेंस के रूप में टाइप किया जाता है।

  • ' : सिंगल कोट्स के भीतर सिंगल कोट कैरेक्टर के रूप में प्रयोग किया जाता है।
  • : एक शाब्दिक के भीतर दोहरे उद्धरण चिह्न के रूप में प्रयोग किया जाता है।
  • ? : जबसे ? एक आरक्षित चरित्र है, इसे शाब्दिक रूप से बच जाना चाहिए।
  • \ : बैकस्लैश को एक चरित्र के रूप में या एक स्ट्रिंग अक्षर के रूप में बच जाना चाहिए, ताकि किसी अन्य अर्थ में परिणाम न हो।
  • a : एक बार एक अलार्म घंटी बजती है, जब एक चरित्र के रूप में या एक स्ट्रिंग अक्षर के भीतर उपयोग किया जाता है।
  •  : एक स्ट्रिंग अक्षर के भीतर डिस्प्ले में बैकस्पेस के रूप में परिणाम, पिछले वर्ण को हटा रहा है।
  • f : वर्ण के रूप में या शाब्दिक के भीतर उपयोग किए जाने पर अगले पृष्ठ को प्रिंटर को फीड करने का कारण बनता है।
  • : कर्सर लौटाता है, जहां अगला वर्ण मुद्रित किया जाना है, लेकिन वर्तमान पंक्ति के भीतर।
  • : ऑपरेटिंग सिस्टम के आधार पर कर्सर को अगली लाइन की शुरुआत में या सिर्फ अगली लाइन पर लौटाता है।
  • : एक क्षैतिज टैब बनाता है।
  • v : एक लंबवत टैब बनाता है।

वर्णों के साथ संचालन

कड़ी

परिभाषा के अनुसार, दो स्ट्रिंग लिटरल को स्पेस के साथ इस प्रकार जोड़ा जा सकता है:

charअध्यक्ष[] = 'एबीसी' 'डीईएफ़';
लागत<<अध्यक्ष<< 'एन';

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

charअध्यक्ष[] = 'एबीसी' 'डीईएफ़'
'नोट करें';
लागत<<अध्यक्ष<< 'एन';

आउटपुट है, abcdefghi।

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

समानता संचालक

एक ही मामले में समान वर्ण समान हैं। वे समान नहीं हैं यदि वे एक ही मामले के नहीं हैं। विचार करना,

बूल परिणाम= 'बी' == 'बी';
लागत<<नतीजा<< 'एन';

== का अर्थ है बराबर, जबकि = का अर्थ है असाइन किया गया और बराबर नहीं। आउटपुट सच के लिए 1 है। विचार करना,

बूल परिणाम= 'बी' == 'बी';
लागत<<नतीजा<< 'एन';

आउटपुट असत्य के लिए 0 है। विचार करना,

बूल परिणाम= 'बी' == 'सी';
लागत<<नतीजा<< 'एन';

आउटपुट असत्य के लिए 0 है। विचार करना,

बूल परिणाम= 'बी' ! = 'बी';
लागत<<नतीजा<< 'एन';

!= का मतलब बराबर नहीं है, जबकि = का मतलब असाइन किया गया है और बराबर नहीं है। आउटपुट असत्य के लिए 0 है। विचार करना,

बूल परिणाम= 'बी' ! = 'बी';
लागत<<नतीजा<< 'एन';

आउटपुट सच के लिए 1 है। विचार करना,

बूल परिणाम= 'बी' ! = 'सी';
लागत<<नतीजा<< 'एन';

आउटपुट सच के लिए 1 है।

तो, == और != समानता ऑपरेटर हैं।

संबंधपरक संकारक

सी ++ में सामान्य वर्णों के लिए, आरोही क्रम में, संख्याएं अपरकेस अक्षरों से पहले आती हैं, जो लोअरकेस अक्षरों से पहले आती हैं।

इसलिए= इसी तरह समझाया गया है।

एक वस्तु के रूप में स्ट्रिंग शाब्दिक

सरणी एक विशेष डेटा प्रकार अनुक्रम की शुरुआत के लिए एक स्थिर सूचक है। इसी तरह, स्ट्रिंग एक वर्ण अनुक्रम की शुरुआत के लिए एक स्थिर सूचक है। निम्नलिखित परिभाषाओं की तुलना करें:

NSआगमन[] = {3, 4, 5, 6, 7};
charपी[] = {'में', 'या', 'एम', 'प्रति', 'एन'};
charकाटें[] = 'महिला';

पहली सरणी इनट्स की एक सरणी है और इसमें पांच तत्व हैं। दूसरी और तीसरी सरणियाँ अलग-अलग नामों वाले वर्णों की सरणियाँ हैं, लेकिन तत्वों की संख्या समान है। दूसरी और तीसरी सरणियाँ समान हैं, लेकिन उनके नाम के लिए। दूसरी सरणी की पाठ्य सामग्री को ब्रेसिज़ द्वारा सीमांकित किया जाता है; वर्णों को अल्पविराम द्वारा अलग किया जाता है और प्रत्येक वर्ण एकल उद्धरणों में होता है। तीसरी सरणी की पाठ्य सामग्री को दोहरे उद्धरण चिह्नों द्वारा सीमांकित किया जाता है; वर्ण अल्पविराम से अलग नहीं होते हैं और प्रत्येक वर्ण एकल उद्धरणों में नहीं होता है। दूसरा और तीसरा सरणियाँ एक स्ट्रिंग बनाने के दो तरीके हैं, तीसरा तरीका बेहतर तरीका है।

एआर अपने सरणी के पहले तत्व के लिए एक स्थिर सूचक है, जिसका अर्थ है कि एआर हमेशा पूर्णांक वाले स्थान को इंगित करेगा, 3 भले ही 3 का मान बदल जाए। सरणी का आकार, पांच तत्व, वास्तव में स्थिर नहीं रहता है। हालाँकि, सरणी के प्रत्येक मान को बदला जा सकता है।

str अपने सरणी के पहले तत्व के लिए एक निरंतर सूचक है, जिसका अर्थ है कि str हमेशा वर्ण वाले स्थान को इंगित करेगा, 'w' भले ही 'w' का मान बदल गया हो। वर्ण सरणी का आकार, पाँच तत्व, वास्तव में स्थिर नहीं रहता है। हालाँकि, शाब्दिक के प्रत्येक मान को बदला जा सकता है।

स्ट्री अपने शाब्दिक (सरणी) के पहले तत्व के लिए एक स्थिर सूचक है, जिसका अर्थ है कि स्ट्री हमेशा चरित्र वाले स्थान को इंगित करेगा, भले ही w का मान बदल गया हो। स्ट्रिंग शाब्दिक (सरणी), पांच तत्वों का आकार वास्तव में स्थिर नहीं रहता है। हालाँकि, शाब्दिक के प्रत्येक मान को संशोधित किया जा सकता है।

सरणी या स्ट्रिंग अक्षर में स्थिर क्या है? सरणी या शाब्दिक के पहले तत्व का स्मृति पता सरणी या शाब्दिक के नाम (पहचानकर्ता) के मान के रूप में रहता है, और इसे बदला नहीं जा सकता है। खैर, सरणी या शाब्दिक का आकार वास्तव में स्थिर नहीं रहता है। सरणी या शाब्दिक में प्रत्येक मान को बदला जा सकता है। निम्न कोड दिखाता है कि प्रत्येक सरणी के चौथे तत्व को कैसे बदला गया है:

NSआगमन[] = {3, 4, 5, 6, 7};
charपी[] = {'में', 'या', 'एम', 'प्रति', 'एन'};
charकाटें[] = 'महिला';

आगमन[3] = 9;
पी[3] = 'और';
काटें[3] = 'और';

लागत<<आगमन[3] << 'एन';
लागत<<पी<< 'एन';
लागत<<काटें<< 'एन';

आउटपुट है:

9
महिलायें महिलायें
महिला

ध्यान दें कि एक परिभाषित स्ट्रिंग शाब्दिक के तत्व, जैसे ऊपर की तीसरी परिभाषा के लिए, सरणी अनुक्रमणिका (सबस्क्रिप्ट) के साथ पहुँचा जा सकता है। आउटपुट की दूसरी लाइन का कारण नीचे दिया गया है।

परिभाषा सबस्क्रिप्ट

ध्यान दें कि उपरोक्त परिभाषाओं में, सबस्क्रिप्ट के लिए कोई पूर्णांक नहीं है। जब तत्वों की संख्या आसानी से निर्धारित नहीं की जा सकती है, तो प्रोग्रामर द्वारा सबस्क्रिप्ट के लिए पूर्णांक को छोड़ दिया जाना चाहिए। जो भी हो, पूर्णांक सरणी में तत्वों की संख्या से कम नहीं होना चाहिए।

स्ट्रिंग अक्षर के लिए, पूर्णांक स्ट्रिंग में वर्णों की संख्या से कम से कम 1 अधिक होना चाहिए। ऐसा इसलिए है क्योंकि शून्य वर्ण () हमेशा संकलक द्वारा जोड़ा जाता है, एक सरणी के अंत में जो एक स्ट्रिंग है, जिसे डबल-कोट्स द्वारा सीमित किया जाता है। उपरोक्त दूसरी सरणी के अंत में शून्य वर्ण नहीं जोड़ा गया है, क्योंकि यह आधिकारिक स्ट्रिंग नहीं है। तीसरी सरणी एक आधिकारिक स्ट्रिंग है। निम्न कोड न्यूनतम सबस्क्रिप्ट मान दिखाता है।

NSआगमन[5] = {3, 4, 5, 6, 7};
charपी[5] = {'में', 'या', 'एम', 'प्रति', 'एन'};
charकाटें[6] = 'महिला';

दूसरी परिभाषा को आधिकारिक स्ट्रिंग बनाने के लिए, शून्य वर्ण को निम्नानुसार जोड़ना होगा:

NSआगमन[5] = {3, 4, 5, 6, 7};
charपी[6] = {'में', 'या', 'एम', 'प्रति', 'एन', ' 0'};
charकाटें[6] = 'महिला';

आउटपुट अब होना चाहिए,

9
महिला
महिला

दूसरी महिलाओं के बिना। ध्यान दें कि दूसरी सरणी के लिए संबंधित सबस्क्रिप्ट 6 है, न कि 5 जैसा वह था।

निरंतर शाब्दिक मूल्य

किसी पहचानकर्ता को दिए गए दोहरे उद्धरण चिह्नों में किसी भी वर्ण को संशोधित होने से रोकने के लिए, बाद में कार्यक्रम में नीचे, आरक्षित शब्द, कॉन्स्ट के साथ परिभाषा से पहले, निम्नानुसार है:

स्थिरांक charअध्यक्ष[] = 'मैं तुमसे प्यार करता हूँ';

स्ट्रिंग लिटरल्स के साथ संचालन

समानता संचालन

समानता ऑपरेटर == और != हैं। जब दो स्ट्रिंग्स के चर (पहचानकर्ता) की तुलना की जाती है, तो यह शाब्दिक के पॉइंटर्स (पते) होते हैं जिनकी तुलना की जाती है; यह गलत है। स्ट्रिंग्स की तुलना करने के लिए, लिटरल की तुलना निम्न कोड में की जानी चाहिए:

बूल परिणाम= 'महिला' == 'महिला';
लागत<<नतीजा<< 'एन';

आउटपुट सच के लिए 1 है। तुलना डिक्शनरी फैशन में की जाती है, लेकिन संख्याओं के साथ आरोही क्रम में, अपरकेस अक्षरों से पहले, जो लोअरकेस अक्षरों से पहले आते हैं। निम्नलिखित कोड का आउटपुट असत्य के लिए 0 है।

बूल परिणाम= 'महिला' ! = 'महिला';
लागत<<नतीजा<< 'एन';

स्ट्रिंग लिटरल्स के साथ रिलेशनल ऑपरेटर्स

संबंधपरक ऑपरेटर स्ट्रिंग अक्षर के साथ काम नहीं करते हैं।

रॉ स्ट्रिंग लिटरल

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

charपी[] =आर'(एबीसी\डी ईएफजी वह
केएलएमएनएन'
'ओपीक्यू'
आरएसटी)';
लागत<< str << '
एन';

आउटपुट है:

abc\d efg हे
केएलएमएन n'' opq
पहला

कोड में, कच्चा स्ट्रिंग अक्षर R से शुरू होता है, उसके बाद और ( । यह समाप्त होता है ) और ।

सी ++ मुख्य स्ट्रिंग शाब्दिक प्रकार

char

चार प्रकार मूल सी ++ प्रकार है और आमतौर पर एक चरित्र को 8 बिट्स में संग्रहीत करता है।

char16_t

यह एक कैरेक्टर को 16 बिट्स में स्टोर करता है।

char32_t

यह एक कैरेक्टर को 32 बिट्स में स्टोर करता है।

wchar_t

char16_t और char32_t विस्तृत वर्ण हैं। wchar_t एक विस्तृत चरित्र है जो स्वामित्व और कार्यान्वयन-परिभाषित है।

निष्कर्ष

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

क्रिसो