কিভাবে C ++ এ স্ট্রিং বিভক্ত করা যায়

How Split String C



স্ট্রিং ডেটা নিয়ে কাজ করা যেকোনো প্রোগ্রামিং ভাষার একটি অপরিহার্য অংশ। কখনও কখনও আমাদের প্রোগ্রামিং উদ্দেশ্যে স্ট্রিং ডেটা ভাগ করতে হয়। স্ট্রিংকে একাধিক অংশে বিভক্ত করার জন্য অনেক প্রোগ্রামিং ভাষায় split () ফাংশন বিদ্যমান। বিভক্ত স্ট্রিংয়ের জন্য C ++ এ কোন অন্তর্নির্মিত বিভক্ত () ফাংশন নেই কিন্তু একই কাজ করার জন্য C ++ এ অনেকগুলি একাধিক উপায় বিদ্যমান, যেমন ব্যবহার করা গেটলাইন () ফাংশন, strtok () ফাংশন, ব্যবহার করে অনুসন্ধান() এবং মুছে দিন () ফাংশন ইত্যাদি C ++ এ স্ট্রিং বিভক্ত করার জন্য এই ফাংশনগুলির ব্যবহার এই টিউটোরিয়ালে ব্যাখ্যা করা হয়েছে

পূর্ব-প্রয়োজনীয়

এই টিউটোরিয়ালের উদাহরণগুলি পরীক্ষা করার আগে, আপনাকে g ++ কম্পাইলারটি ইনস্টল করা আছে কি না তা পরীক্ষা করতে হবে। আপনি যদি ভিজ্যুয়াল স্টুডিও কোড ব্যবহার করেন, তাহলে এক্সিকিউটেবল কোড তৈরি করতে C ++ সোর্স কোড কম্পাইল করার জন্য প্রয়োজনীয় এক্সটেনশন ইনস্টল করুন। এখানে, ভিসুয়াল স্টুডিও কোড অ্যাপ্লিকেশনটি C ++ কোড কম্পাইল এবং এক্সিকিউট করতে ব্যবহৃত হয়েছে।







Getline () ফাংশন ব্যবহার করে স্ট্রিং স্প্লিট করুন

একটি নির্দিষ্ট ডিলিমিটার বা বিভাজক না পাওয়া পর্যন্ত একটি স্ট্রিং বা একটি ফাইলের বিষয়বস্তু থেকে অক্ষর পড়তে এবং প্রতিটি পার্স স্ট্রিংকে অন্য স্ট্রিং ভেরিয়েবলে সংরক্ষণ করতে getline () ফাংশনটি ব্যবহার করা হয়। স্ট্রিং বা ফাইলের সম্পূর্ণ বিষয়বস্তু পার্স না করা পর্যন্ত ফাংশনটি কাজটি চালিয়ে যাবে। এই ফাংশনের সিনট্যাক্স নিচে দেওয়া হল।



বাক্য গঠন:



প্রবাহ&গেটলাইন(প্রবাহ&হল, স্ট্রিং&str,গৃহস্থালিডিলিম);

এখানে, প্রথম প্যারামিটার, প্রবাহ, যে বস্তু থেকে অক্ষর বের করা হবে। দ্বিতীয় প্যারামিটার হল একটি স্ট্রিং ভেরিয়েবল যা নিষ্কাশিত মান সংরক্ষণ করবে। তৃতীয় প্যারামিটারটি ডিলিমিটার সেট করতে ব্যবহৃত হয় যা স্ট্রিং বের করার জন্য ব্যবহার করবে।





নিম্নলিখিত কোড সহ একটি সি ++ ফাইল তৈরি ব্যবহার স্থান বিভেদক উপর ভিত্তি করে একটি স্ট্রিং বিভক্ত করতে গেটলাইন () ফাংশন একাধিক শব্দের একটি স্ট্রিং মান একটি ভেরিয়েবলে বরাদ্দ করা হয়েছে, এবং স্থানটি বিভাজক হিসাবে ব্যবহার করা হয়েছে। নিষ্কাশিত শব্দগুলি সংরক্ষণ করার জন্য একটি ভেক্টর পরিবর্তনশীল ঘোষণা করা হয়েছে। পরবর্তী, 'for' লুপ ভেক্টর অ্যারে থেকে প্রতিটি মান প্রিন্ট করতে ব্যবহার করেছে।

// প্রয়োজনীয় লাইব্রেরি অন্তর্ভুক্ত করুন
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত

intপ্রধান()
{
// স্ট্রিং ডেটা সংজ্ঞায়িত করুন যা বিভক্ত হবে
ঘন্টার::স্ট্রিংstrData= 'সি ++ প্রোগ্রামিং শিখুন';
// কনটেন্ট ডেটা সংজ্ঞায়িত করুন যা ডিলিমিটার হিসাবে কাজ করবে
const গৃহস্থালিবিভাজক= '';
// স্ট্রিং এর গতিশীল অ্যারে পরিবর্তনশীল সংজ্ঞায়িত করুন
ঘন্টার::ভেক্টরআউটপুট অ্যারে;
// স্ট্রিং থেকে একটি স্ট্রিম তৈরি করুন
ঘন্টার::স্ট্রিং স্ট্রিমstreamData(strData);
/ *
স্ট্রিং ভেরিয়েবল ঘোষণা করুন যা ব্যবহার করা হবে
বিভক্ত হওয়ার পর তথ্য সংরক্ষণ করা
* /

ঘন্টার::স্ট্রিংঘন্টা;
/ *
লুপ বিভক্ত তথ্য পুনরাবৃত্তি করবে এবং
অ্যারের মধ্যে তথ্য সন্নিবেশ করান
* /

যখন (ঘন্টার::গেটলাইন(streamData, val, বিভাজক)) {
আউটপুট অ্যারে।ফেরত পাঠাও(ঘন্টা);
}
// বিভক্ত তথ্য মুদ্রণ করুন
ঘন্টার::খরচ << 'মূল স্ট্রিং হল:' <<strData<<ঘন্টার::endl;
// অ্যারে পড়ুন এবং বিভক্ত ডেটা মুদ্রণ করুন
ঘন্টার::খরচ << 'nস্থান ভিত্তিক স্ট্রিং বিভক্ত করার পর মান: ' <<ঘন্টার::endl;
জন্য (স্বয়ংক্রিয় &ঘন্টা:আউটপুট অ্যারে) {
ঘন্টার::খরচ <<ঘন্টা<<ঘন্টার::endl;
}
প্রত্যাবর্তন 0;
}

আউটপুট:



উপরের কোডটি কার্যকর করার পর নিম্নলিখিত আউটপুটটি প্রদর্শিত হবে।

Strtok () ফাংশন ব্যবহার করে স্ট্রিং স্প্লিট করুন

Strtok () ফাংশনটি একটি ডিলিমিটারের উপর ভিত্তি করে স্ট্রিংয়ের অংশকে টোকাইনিং করে একটি স্ট্রিং বিভক্ত করতে ব্যবহার করা যেতে পারে। যদি এটি বিদ্যমান থাকে তবে এটি পরবর্তী টোকনে একটি পয়েন্টার ফেরত দেয়; অন্যথায়, এটি একটি শূন্য মান প্রদান করে। দ্য string.h এই ফাংশনটি ব্যবহার করার জন্য হেডার ফাইল প্রয়োজন। একটি লুপ স্ট্রিং থেকে সমস্ত বিভক্ত মান পড়ার প্রয়োজন হবে। প্রথম যুক্তিতে স্ট্রিং মান রয়েছে যা বিশ্লেষণ করা হবে, এবং দ্বিতীয় যুক্তিতে ডিলিমিটার রয়েছে যা টোকেন তৈরি করতে ব্যবহৃত হবে। এই ফাংশনের সিনট্যাক্স নিচে দেওয়া হল।

বাক্য গঠন:

গৃহস্থালি * strtok ( গৃহস্থালি *str,const গৃহস্থালি *সীমাবদ্ধতা);

Strtok () ফাংশন ব্যবহার করে একটি স্ট্রিং বিভক্ত করতে নিম্নলিখিত কোড সহ একটি C ++ ফাইল তৈরি করুন। অক্ষরগুলির একটি অ্যারে সংজ্ঞায়িত করা হয়েছে একটি কোলন (':') ধারণকারী কোডকে বিভাজক হিসেবে। পরবর্তী, strtok () প্রথম টোকেন উৎপন্ন করার জন্য স্ট্রিং মান এবং ডিলিমিটার দিয়ে ফাংশন বলা হয়। দ্য ' যখন 'লুপ সংজ্ঞায়িত করা হয় যতক্ষণ না অন্যান্য টোকেন এবং টোকেন মান তৈরি করে খালি মান পাওয়া যায়।

// প্রয়োজনীয় লাইব্রেরি অন্তর্ভুক্ত করুন
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত

intপ্রধান()
{
// অক্ষরের একটি অ্যারে ঘোষণা করুন
গৃহস্থালিstrArray[] = 'মেহরাব হোসেন: আইটি পেশাদার: [ইমেল সুরক্ষিত]: +8801726783423';
// ':' এর উপর ভিত্তি করে প্রথম টোকেন মান ফেরত দিন
গৃহস্থালি *টোকেন ভ্যালু= strtok(strArray,':');
// কাউন্টার ভেরিয়েবল শুরু করুন
intপাল্টা= ;
/ *
টোকেন মান মুদ্রণ করার জন্য লুপটি পুনরাবৃত্তি করুন
এবং পেতে বাকি স্ট্রিং তথ্য বিভক্ত
পরবর্তী টোকেন মান
* /

যখন (টোকেন ভ্যালু!= খালি)
{
যদি(পাল্টা== )
printf('নাম: %sn', টোকেন ভ্যালু);
অন্য যদি(পাল্টা== 2)
printf(পেশা: %sn', টোকেন ভ্যালু);
অন্য যদি(পাল্টা== 3)
printf('ইমেল: %sn', টোকেন ভ্যালু);
অন্য
printf('মোবাইল নং: %sn', টোকেন ভ্যালু);
টোকেন ভ্যালু= strtok(খালি,':');
পাল্টা++;
}
প্রত্যাবর্তন 0;
}

আউটপুট:

উপরের কোডটি কার্যকর করার পর নিম্নলিখিত আউটপুটটি প্রদর্শিত হবে।

Find () এবং erase () ফাংশন ব্যবহার করে স্ট্রিং স্প্লিট করুন

Find () এবং erase () ফাংশন ব্যবহার করে স্ট্রিংটিকে C ++ এ বিভক্ত করা যায়। একটি নির্দিষ্ট ডেলিমিটারের উপর ভিত্তি করে একটি স্ট্রিং মান বিভক্ত করার জন্য find () এবং erase () ফাংশনের ব্যবহারগুলি পরীক্ষা করার জন্য নিচের কোড সহ একটি C ++ ফাইল তৈরি করুন। Find () ফাংশন ব্যবহার করে ডিলিমিটার পজিশন খুঁজে টোকেন ভ্যালু উৎপন্ন হয় এবং erase () ফাংশন ব্যবহার করে ডিলিমিটার অপসারণের পর টোকেন ভ্যালু সংরক্ষণ করা হবে। স্ট্রিং এর সম্পূর্ণ বিষয়বস্তু বিশ্লেষণ না করা পর্যন্ত এই কাজটি পুনরাবৃত্তি করা হবে। পরবর্তী, ভেক্টর অ্যারের মানগুলি মুদ্রিত হবে।

// প্রয়োজনীয় লাইব্রেরি অন্তর্ভুক্ত করুন
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত
#অন্তর্ভুক্ত

intপ্রধান(){
// স্ট্রিং সংজ্ঞায়িত করুন
ঘন্টার::স্ট্রিংstringData= 'বাংলাদেশ এবং জাপান এবং জার্মানি এবং ব্রাজিল';
// বিভাজক সংজ্ঞায়িত করুন
ঘন্টার::স্ট্রিংবিভাজক= 'এবং';
// ভেক্টর ভেরিয়েবল ঘোষণা করুন
ঘন্টার::ভেক্টরদেশ{};
// পূর্ণসংখ্যা পরিবর্তনশীল ঘোষণা করুন
intঅবস্থান;
// স্ট্রিং ভেরিয়েবল ঘোষণা করুন
ঘন্টার::স্ট্রিংoutstr, টোকেন;

/ *
Substr () ফাংশন ব্যবহার করে স্ট্রিং বিভক্ত করুন
এবং ভেক্টরে বিভক্ত শব্দ যোগ করা
* /

যখন ((অবস্থান=stringData।অনুসন্ধান(বিভাজক)) !=ঘন্টার::স্ট্রিং::npos) {
টোকেন=stringData।স্তর(0, অবস্থান);
// বিভক্ত স্ট্রিং এর সামনে থেকে অতিরিক্ত জায়গা সরান
দেশফেরত পাঠাও(টোকেন.মুছে ফেলা(0, টোকেন.প্রথম_ না_ খুঁজে('')));
stringData।মুছে ফেলা(0, অবস্থান+বিভাজক।দৈর্ঘ্য());
}
// শেষ শব্দটি ছাড়া সমস্ত বিভক্ত শব্দ মুদ্রণ করুন
জন্য (const স্বয়ংক্রিয় &outstr:দেশ) {
ঘন্টার::খরচ <<outstr<<ঘন্টার::endl;
}
// শেষ বিভক্ত শব্দ মুদ্রণ করুন
ঘন্টার::খরচ <<stringData।মুছে ফেলা(0, stringData।প্রথম_ না_ খুঁজে('')) <<ঘন্টার::endl;
প্রত্যাবর্তন 0;
}

আউটপুট:

উপরের কোডটি কার্যকর করার পর নিম্নলিখিত আউটপুটটি প্রদর্শিত হবে।

উপসংহার

C ++ এ একটি স্ট্রিং বিভক্ত করার তিনটি ভিন্ন উপায় এই টিউটোরিয়ালে ব্যাখ্যা করা হয়েছে সহজ উদাহরণ ব্যবহার করে নতুন পাইথন ব্যবহারকারীদের C ++ তে সহজেই বিভক্ত অপারেশন করতে সাহায্য করার জন্য।