सी ++ में स्ट्रिंग को कैसे विभाजित करें

How Split String C



स्ट्रिंग डेटा के साथ काम करना किसी भी प्रोग्रामिंग भाषा का एक अनिवार्य हिस्सा है। कभी-कभी हमें प्रोग्रामिंग उद्देश्यों के लिए स्ट्रिंग डेटा को विभाजित करने की आवश्यकता होती है। स्प्लिट () फ़ंक्शन स्ट्रिंग को कई भागों में विभाजित करने के लिए कई प्रोग्रामिंग भाषाओं में मौजूद है। स्ट्रिंग को विभाजित करने के लिए C++ में कोई बिल्ट-इन स्प्लिट () फ़ंक्शन नहीं है, लेकिन C++ में समान कार्य करने के लिए कई तरीके मौजूद हैं, जैसे कि उपयोग करना लाइन में आओ() समारोह, स्ट्रोक () समारोह, का उपयोग कर पाना() तथा मिटाना () फ़ंक्शंस, आदि। C++ में स्ट्रिंग्स को विभाजित करने के लिए इन फ़ंक्शंस के उपयोग को इस ट्यूटोरियल में समझाया गया है।

पूर्व-अपेक्षा

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







गेटलाइन () फ़ंक्शन का उपयोग करके स्ट्रिंग को विभाजित करें

गेटलाइन () फ़ंक्शन का उपयोग स्ट्रिंग या फ़ाइल सामग्री से वर्णों को पढ़ने के लिए किया जाता है जब तक कि कोई विशेष सीमांकक या विभाजक नहीं मिल जाता है और प्रत्येक पार्स स्ट्रिंग को दूसरे स्ट्रिंग चर में संग्रहीत करता है। फ़ंक्शन तब तक कार्य जारी रखेगा जब तक स्ट्रिंग या फ़ाइल की पूरी सामग्री को पार्स नहीं किया जाता है। इस फ़ंक्शन का सिंटैक्स नीचे दिया गया है।



वाक्य - विन्यास:



इसट्रीमऔरलाइन में आओ(इसट्रीमऔरहै, स्ट्रिंगऔरस्ट्र,charपरिसीमक);

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





स्पेस डिलीमीटर के आधार पर स्ट्रिंग को विभाजित करने के लिए निम्नलिखित कोड के साथ एक C++ फाइल बनाएं लाइन में आओ() समारोह। कई शब्दों का एक स्ट्रिंग मान एक चर में निर्दिष्ट किया गया है, और स्थान का उपयोग विभाजक के रूप में किया गया है। निकाले गए शब्दों को संग्रहीत करने के लिए एक वेक्टर चर घोषित किया गया है। इसके बाद, 'फॉर' लूप ने वेक्टर एरे से प्रत्येक मान को प्रिंट करने के लिए उपयोग किया है।

// आवश्यक पुस्तकालयों को शामिल करें
#शामिल
#शामिल
#शामिल
#शामिल

NSमुख्य()
{
// स्ट्रिंग डेटा को परिभाषित करें जिसे विभाजित किया जाएगा
घंटे::डोरीस्ट्रडाटा= 'सी++ प्रोग्रामिंग सीखें';
// सामग्री डेटा को परिभाषित करें जो सीमांकक के रूप में काम करेगा
स्थिरांक charसेपरेटर= '';
// स्ट्रिंग्स के डायनामिक ऐरे वेरिएबल को परिभाषित करें
घंटे::वेक्टरआउटपुटअरे;
// स्ट्रिंग से एक धारा का निर्माण करें
घंटे::स्ट्रिंगस्ट्रीमस्ट्रीमडेटा(स्ट्रडाटा);
/ *
स्ट्रिंग वैरिएबल घोषित करें जिसका उपयोग किया जाएगा
विभाजन के बाद डेटा स्टोर करने के लिए
* /

घंटे::डोरीबजे;
/ *
लूप विभाजित डेटा को पुनरावृत्त करेगा और
सरणी में डेटा डालें
* /

जबकि (घंटे::लाइन में आओ(स्ट्रीमडेटा, वैल, सेपरेटर)) {
आउटपुट ऐरे।वापस धक्का देना(बजे);
}
// विभाजित डेटा प्रिंट करें
घंटे::लागत << 'मूल स्ट्रिंग है:' <<स्ट्रडाटा<<घंटे::एंडली;
// सरणी पढ़ें और विभाजित डेटा प्रिंट करें
घंटे::लागत << 'एनस्पेस के आधार पर स्ट्रिंग को विभाजित करने के बाद के मान:' <<घंटे::एंडली;
के लिये (ऑटो औरबजे:आउटपुटअरे) {
घंटे::लागत <<बजे<<घंटे::एंडली;
}
वापसी 0;
}

आउटपुट:



उपरोक्त कोड को निष्पादित करने के बाद निम्न आउटपुट दिखाई देगा।

strtok () फ़ंक्शन का उपयोग करके स्ट्रिंग को विभाजित करें

strtok () फ़ंक्शन का उपयोग एक सीमांकक के आधार पर स्ट्रिंग के हिस्से को टोकन करके स्ट्रिंग को विभाजित करने के लिए किया जा सकता है। यह अगले टोकन के लिए एक सूचक देता है यदि यह मौजूद है; अन्यथा, यह एक NULL मान देता है। NS string.h इस फ़ंक्शन का उपयोग करने के लिए हेडर फ़ाइल की आवश्यकता होती है। एक लूप को स्ट्रिंग से सभी विभाजित मानों को पढ़ने की आवश्यकता होगी। पहले तर्क में स्ट्रिंग मान होता है जिसे पार्स किया जाएगा, और दूसरे तर्क में सीमांकक होता है जिसका उपयोग टोकन उत्पन्न करने के लिए किया जाएगा। इस फ़ंक्शन का सिंटैक्स नीचे दिया गया है।

वाक्य - विन्यास:

char * स्ट्रोको ( char *स्ट्र,स्थिरांक char *सीमांकक);

strtok() फ़ंक्शन का उपयोग करके स्ट्रिंग को विभाजित करने के लिए निम्न कोड के साथ एक C++ फ़ाइल बनाएं। विभाजक के रूप में एक कोलन (':') वाले कोड में वर्णों की एक सरणी परिभाषित की गई है। अगला, स्ट्रोक () फ़ंक्शन को पहला टोकन उत्पन्न करने के लिए स्ट्रिंग मान और सीमांकक के साथ बुलाया जाता है। NS ' जबकि लूप को अन्य टोकन और टोकन मान उत्पन्न करने के लिए तब तक परिभाषित किया जाता है जब तक शून्य मूल्य पाया जाता है।

// आवश्यक पुस्तकालयों को शामिल करें
#शामिल
#शामिल

NSमुख्य()
{
// वर्णों की एक सरणी घोषित करें
charstrArray[] = 'मेहराब हुसैन: आईटी पेशेवर: [ईमेल संरक्षित]: +8801726783423';
// ':' के आधार पर पहला टोकन मान लौटाएं
char *टोकनवैल्यू= स्ट्रोको(स्ट्रैअरे,':');
// काउंटर वैरिएबल को इनिशियलाइज़ करें
NSकाउंटर= 1;
/ *
टोकन मान को प्रिंट करने के लिए लूप को पुनरावृत्त करें
और शेष स्ट्रिंग डेटा को प्राप्त करने के लिए विभाजित करें
अगला टोकन मूल्य
* /

जबकि (टोकनवैल्यू!= शून्य)
{
अगर(काउंटर== 1)
printf('नाम:%sएन', टोकनवैल्यू);
अन्यथा अगर(काउंटर== 2)
printf(व्यवसाय : %sएन', टोकनवैल्यू);
अन्यथा अगर(काउंटर== 3)
printf(ईमेल : %sएन', टोकनवैल्यू);
अन्यथा
printf('मोबाइल नंबर : %sएन', टोकनवैल्यू);
टोकनवैल्यू= स्ट्रोको(शून्य,':');
काउंटर++;
}
वापसी 0;
}

आउटपुट:

उपरोक्त कोड को निष्पादित करने के बाद निम्न आउटपुट दिखाई देगा।

खोजने () और मिटा () फ़ंक्शन का उपयोग करके स्ट्रिंग को विभाजित करें

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

// आवश्यक पुस्तकालयों को शामिल करें
#शामिल
#शामिल
#शामिल

NSमुख्य(){
// स्ट्रिंग को परिभाषित करें
घंटे::डोरीस्ट्रिंगडेटा= 'बांग्लादेश और जापान और जर्मनी और ब्राजील';
// विभाजक को परिभाषित करें
घंटे::डोरीसेपरेटर= 'तथा';
// वेक्टर वैरिएबल घोषित करें
घंटे::वेक्टरदेश{};
// पूर्णांक चर घोषित करें
NSपद;
// स्ट्रिंग वैरिएबल घोषित करें
घंटे::डोरीआउटस्ट्र, टोकन;

/ *
सबस्ट्र () फ़ंक्शन का उपयोग करके स्ट्रिंग को विभाजित करें
और विभाजित शब्द को वेक्टर में जोड़ना
* /

जबकि ((पद=स्ट्रिंगडाटा।पाना(सेपरेटर)) !=घंटे::डोरी::एनपीओ) {
टोकन=स्ट्रिंगडाटा।पदार्थ(0, पद);
// विभाजित स्ट्रिंग के सामने से अतिरिक्त स्थान निकालें
देश।वापस धक्का देना(टोकन।मिटा(0, टोकन।ढूँढें_फर्स्ट_नोट_ऑफ़('')));
स्ट्रिंगडाटा।मिटा(0, पद+विभाजक।लंबाई());
}
// पिछले एक को छोड़कर सभी विभाजित शब्द प्रिंट करें
के लिये (स्थिरांक ऑटो औरबाहर:देश) {
घंटे::लागत <<बाहर<<घंटे::एंडली;
}
// अंतिम विभाजित शब्द प्रिंट करें
घंटे::लागत <<स्ट्रिंगडाटा।मिटा(0, स्ट्रिंगडाटा।ढूँढें_फर्स्ट_नोट_ऑफ़('')) <<घंटे::एंडली;
वापसी 0;
}

आउटपुट:

उपरोक्त कोड को निष्पादित करने के बाद निम्न आउटपुट दिखाई देगा।

निष्कर्ष

सी ++ में स्ट्रिंग को विभाजित करने के तीन अलग-अलग तरीकों को इस ट्यूटोरियल में सरल उदाहरणों का उपयोग करके समझाया गया है ताकि नए पायथन उपयोगकर्ताओं को सी ++ में आसानी से स्प्लिट ऑपरेशन करने में मदद मिल सके।