C++ स्ट्रिंग फ़ंक्शन: strcpy(), strcat(), strlen(), strcmp()

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

C++ strcpy, strcat, strlen और strcmp जैसे स्ट्रिंग फ़ंक्शन प्रोग्राम को टेक्स्ट को कॉपी करने, जोड़ने, मापने और तुलना करने की सुविधा देते हैं। यह संसाधन बताता है कि स्ट्रिंग क्या होती है, C-शैली और std::string स्ट्रिंग को कैसे घोषित किया जाता है, उनके मानों तक कैसे पहुँचा जाता है और उदाहरणों के साथ मुख्य स्ट्रिंग फ़ंक्शन कैसे लागू किए जाते हैं।

  • 🔤 मूल परिभाषा: स्ट्रिंग वर्णों का एक क्रम है; C++ स्ट्रिंग std::string क्लास का एक ऑब्जेक्ट है।
  • 🧱 दो घोषणाएँ: C++ यह '\0' द्वारा समाप्त होने वाले C-शैली के कैरेक्टर एरे और सुरक्षित std::string क्लास प्रकार का समर्थन करता है।
  • 📥 मूल्यों तक पहुंच: स्ट्रिंग को नाम से पढ़ा और प्रिंट किया जाता है, जिसे char एरे और std::string दोनों के साथ प्रदर्शित किया गया है।
  • स्ट्रिंग फ़ंक्शन: strcpy कॉपी करता है, strcat संयोजन करता है, strlen लंबाई मापता है, और strcmp दो स्ट्रिंग की तुलना करता है।
  • 📦 हेडर आवश्यक: C स्ट्रिंग फ़ंक्शन cstring हेडर में मौजूद होते हैं, जिसे उपयोग करने से पहले शामिल किया जाना चाहिए।

C++ स्ट्रिंग फ़ंक्शंस

स्ट्रिंग क्या है?

स्ट्रिंग वर्णों का एक अनुक्रम है। C++ स्ट्रिंग std::string क्लास का एक ऑब्जेक्ट है। वर्णों को बाइट्स के अनुक्रम के रूप में संग्रहीत किया जाता है, जिसमें एक एकल वर्ण बाइट तक पहुंच की अनुमति होती है।

C++ स्ट्रिंग गतिशील रूप से मेमोरी आवंटित करती हैं। आवश्यकता पड़ने पर रनटाइम के दौरान स्ट्रिंग को अतिरिक्त मेमोरी आवंटित की जा सकती है। मेमोरी का पूर्व-आवंटन न होने के कारण मेमोरी की बर्बादी नहीं होती। हम स्ट्रिंग पर तुलना, संयोजन, रूपांतरण आदि सहित विभिन्न संक्रियाएँ कर सकते हैं।

स्ट्रिंग्स की घोषणा

C++ दो प्रकार की स्ट्रिंग घोषणाओं का समर्थन करता है:

  • सी-शैली वर्ण स्ट्रिंग
  • स्ट्रिंग वर्ग प्रकार

सी-स्टाइल कैरेक्टर स्ट्रिंग

इस प्रकार की स्ट्रिंग घोषणा को इसमें पेश किया गया था सी प्रोग्रामिंग भाषा. C++ इसका समर्थन जारी है। यह बस एक आयामी वर्ण सरणी है जो एक नल वर्ण (\0) के साथ समाप्त होती है। एक नल-टर्मिनेटेड स्ट्रिंग में स्ट्रिंग बनाने वाले वर्णों के बाद एक नल होता है।

नीचे दी गई स्ट्रिंग घोषणा पर विचार करें:

char name[5] = {'J', 'o', 'h', 'n', '\0'};

उपरोक्त घोषणा से एक स्ट्रिंग बनती है जो "जॉन" शब्द का निर्माण करती है। शब्द में 4 अक्षर हैं, लेकिन स्ट्रिंग का आकार 5 है। अतिरिक्त स्थान नल कैरेक्टर को रखने के लिए है।

सरणी आरंभीकरण नियम का उपयोग करके, हम उपरोक्त कथन को इस प्रकार लिख सकते हैं:

char name[] = "John";

ध्यान दें कि स्ट्रिंग स्थिरांक के अंत में नल कैरेक्टर लगाना आवश्यक नहीं है। C++ सरणी को आरंभ करते समय कंपाइलर स्वचालित रूप से स्ट्रिंग के अंत में '\0' रख देगा।

एसटीडी :: स्ट्रिंग

मानक C++ लाइब्रेरी स्ट्रिंग क्लास प्रदान करती है, जो विभिन्न स्ट्रिंग ऑपरेशनों का समर्थन करती है। इसे std::string के रूप में लिखा जाता है।

इस क्लास का उपयोग करने के लिए, हमें पहले इसे नीचे दिखाए गए अनुसार #include प्रीप्रोसेसर का उपयोग करके अपने वर्कस्पेस में शामिल करना होगा:

#include <string>

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

string name = "John";

उपरोक्त कथन जॉन मान को धारण करने के लिए name नामक एक स्ट्रिंग बनाएगा।

स्ट्रिंग मान तक पहुँचना

In C++, हम स्ट्रिंग नाम का उपयोग करके स्ट्रिंग मानों तक पहुँच सकते हैं। उदाहरण के लिए:

#include <iostream>
using namespace std;
int main() {
	char name[5] = { 'J', 'o', 'h', 'n', '\0' };
	cout << "String value is: ";
	cout << name << endl;
	return 0;
}

आउटपुट:

स्ट्रिंग मान तक पहुँचना

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

स्ट्रिंग मान तक पहुँचना

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

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

यहाँ एक और उदाहरण दिया गया है C++ मानक स्ट्रिंग वर्ग:

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

	string name = "Guru99";

	cout << "The name is : " << name << endl;

	return 0;
}

आउटपुट:

स्ट्रिंग मान तक पहुँचना

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

स्ट्रिंग मान तक पहुँचना

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

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

स्ट्रिंग फ़ंक्शन C++

आप अक्सर स्ट्रिंग्स में हेरफेर करना चाहेंगे। C++ यह कई प्रकार के फ़ंक्शन प्रदान करता है जिनका उपयोग आप इसके लिए कर सकते हैं। ये फ़ंक्शन इसमें परिभाषित हैं। हेडर फ़ाइल है, इसलिए फ़ंक्शन का उपयोग करने के लिए हमें इसे अपने कोड में शामिल करना होगा। आइए कुछ पर चर्चा करें:

स्ट्रैपी()

यह स्ट्रिंग कॉपी फ़ंक्शन है। यह एक स्ट्रिंग को दूसरी स्ट्रिंग में कॉपी करता है।

सिंटेक्स:

strcpy(string1, string2);

फंक्शन के दो पैरामीटर, string1 और string2, स्ट्रिंग हैं। यह फंक्शन स्ट्रिंग string2 को string1 में कॉपी करेगा।

स्ट्रैटकैट()

यह स्ट्रिंग कोन्केटेनेट फंक्शन है। यह स्ट्रिंग को जोड़ता है।

सिंटेक्स:

strcat(string1, string2);

फ़ंक्शन के दो पैरामीटर, string1 और string2, वे स्ट्रिंग हैं जिन्हें आपस में जोड़ा जाना है। उपरोक्त फ़ंक्शन स्ट्रिंग string2 को स्ट्रिंग string1 के अंत में जोड़ देगा।

strlen ()

यह स्ट्रिंग लंबाई फ़ंक्शन है। यह तर्क के रूप में पास की गई स्ट्रिंग की लंबाई लौटाता है।

सिंटेक्स:

strlen(string1);

पैरामीटर string1 उस स्ट्रिंग का नाम है जिसकी लंबाई निर्धारित की जानी है। उपरोक्त फ़ंक्शन स्ट्रिंग string1 की लंबाई लौटाएगा।

strcmp ()

यह स्ट्रिंग तुलना फ़ंक्शन है। इसका उपयोग स्ट्रिंग तुलना के लिए किया जाता है।

सिंटेक्स:

strcmp(string1, string2);

उपरोक्त फ़ंक्शन 0 लौटाएगा यदि स्ट्रिंग string1 और string2 समान हैं, 0 से कम लौटाएगा यदि string1 < string2 है, और 0 से अधिक लौटाएगा यदि string1 > string2 है।

उदाहरण:

निम्नलिखित उदाहरण दर्शाता है कि उपरोक्त स्ट्रिंग फ़ंक्शन का उपयोग कैसे किया जाता है:

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

	char name1[10] = "Guru99";
	char name2[10] = "John";
	char name3[10];

	int len;
	strcpy(name3, name1);
	cout << "strcpy( name3, name1) : " << name3 << endl;

	strcat(name1, name2);
	cout << "strcat( name1, name2): " << name1 << endl;

	len = strlen(name1);
	cout << "strlen(name1) : " << len << endl;
	return 0;
}

आउटपुट:

स्ट्रिंग फ़ंक्शन C++

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

स्ट्रिंग फ़ंक्शन C++

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

  1. हमारे कोड में iostream हेडर फ़ाइल शामिल करें। यह हमें कंसोल से पढ़ने और उसमें लिखने की अनुमति देगा।
  2. मानक सहित हमारे कोड में हेडर।
  3. std नामस्थान को शामिल करना ताकि इसे कॉल किए बिना इसके क्लासों और फ़ंक्शनों का उपयोग किया जा सके।
  4. main() फ़ंक्शन को कॉल करना, जिसके अंदर प्रोग्राम का लॉजिक जोड़ा जाना चाहिए। { main() फ़ंक्शन के बॉडी की शुरुआत को दर्शाता है।
  5. 10 अक्षरों की एक स्ट्रिंग घोषित की जाती है और उसे name1 नाम दिया जाता है। यह स्ट्रिंग मान को संग्रहीत करेगी। Guru99.
  6. 10 अक्षरों की एक स्ट्रिंग घोषित करना और उसे name2 नाम देना। स्ट्रिंग में John का मान संग्रहीत होगा।
  7. 10 अक्षरों की एक स्ट्रिंग घोषित करना और उसे name3 नाम देना.
  8. घोषणा करना पूर्णांक चर नाम दिया गया लेन.
  9. स्ट्रिंग नाम1 को स्ट्रिंग नाम3 में कॉपी करना।
  10. स्ट्रिंग name3 का मान और कुछ टेक्स्ट कंसोल पर प्रिंट करना। इसे प्रिंट करना चाहिए। Guru99.
  11. स्ट्रिंग name2 को स्ट्रिंग name1 के अंत में जोड़ा जा रहा है। अब name1 का मान यह है: Guru99जॉन.
  12. स्ट्रिंग name1 का मान और कुछ टेक्स्ट कंसोल पर प्रिंट करना। इसे प्रिंट करना चाहिए। Guru99जॉन.
  13. name1 नामक स्ट्रिंग की लंबाई निर्धारित करना और उस लंबाई का मान len नामक वेरिएबल को असाइन करना।
  14. कंसोल पर len वेरिएबल के मान के साथ-साथ कुछ अन्य टेक्स्ट को प्रिंट करना।
  15. यदि प्रोग्राम ठीक से चलता है तो main() फ़ंक्शन को एक मान लौटाना चाहिए।
  16. main() फ़ंक्शन के मुख्य भाग का अंत.

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

जी हां। एआई सहायक कैरेक्टर एरे को std::string में रिफैक्टर कर सकते हैं, संबंधित फ़ंक्शन को अपडेट कर सकते हैं और सुरक्षा लाभों की व्याख्या कर सकते हैं। डेवलपर्स को फिर भी विशेष परिस्थितियों, बफर आकार और अपेक्षित व्यवहार के लिए परिवर्तनों की समीक्षा करनी चाहिए।

जी हां। एआई उपकरण उदाहरण तैयार करते हैं, strcpy और strcat के व्यवहार को समझाते हैं, और बफर ओवरफ्लो के जोखिमों को चिह्नित करते हैं। इससे समझने में तेजी आती है, लेकिन व्यवहार की पुष्टि करने का सबसे अच्छा तरीका कोड को स्वयं चलाना ही है।

std::string मेमोरी को गतिशील रूप से प्रबंधित करता है और संयोजन और तुलना जैसे अंतर्निहित ऑपरेशन प्रदान करता है। C-शैली की स्ट्रिंग निश्चित वर्ण सरणियाँ होती हैं जो '\0' द्वारा समाप्त होती हैं, जिन्हें मैन्युअल मेमोरी प्रबंधन की आवश्यकता होती है और इनमें त्रुटियों की संभावना अधिक होती है।

यदि गंतव्य ऐरे बहुत छोटा हो तो इनसे बफर ओवरफ्लो हो सकता है। सुरक्षित विकल्पों में strncpy, strncat या std::string ऑपरेशन का उपयोग करना शामिल है, जो मेमोरी को स्वचालित रूप से प्रबंधित करते हैं और इन जोखिमों को कम करते हैं।

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