কখনও কখনও কম্পিউটেশনাল লিংইস্টিক্স, মেশিন লার্নিং, এবং ডেটা অ্যানালিসিসের মতো ক্ষেত্রে বড় পরিমাণ টেক্সট ডেটা ম্যানেজ করার প্রয়োজন পড়ে। তাই, C++-এ স্ট্রিং এবং লিস্ট সাধারণত এই কাজের জন্য ব্যবহার করা হয়। কখনও কখনও, আমাদের একটি স্ট্রিং বা ক্যারেক্টারের লিস্ট থেকে একটি ক্যারেক্টারের প্রাথমিক উপস্থিতি সরাতে হয়। এই নিবন্ধে, আমরা C++-এ একটি স্ট্রিংয়ের প্রথম ক্যারেক্টার সরানোর বিকল্প পদ্ধতিগুলো দেখব। ফাংশনটি স্ট্রিংয়ের কন্টেন্টের প্রথম ক্যারেক্টার সরিয়ে দেয়, যার ফলে একটি ছোট স্ট্রিং তৈরি হয়।
উদাহরণ ১: C++-এ erase() মেথড ব্যবহার করে স্ট্রিংয়ের প্রথম ক্যারেক্টার সরানো
স্ট্রিং থেকে ক্যারেক্টার সরানোর জন্য string::erase ফাংশনটি সুপারিশ করা পদ্ধতি। নিচের C++ প্রোগ্রামে স্কোপ ওভারলোড প্রদর্শন করা হলো:
প্রোগ্রামের main ফাংশন থেকে শুরু করি। main ফাংশনের প্যারেনথেসিসের ভিতরে, স্ট্রিং ভেরিয়েবল রিপ্রেজেন্ট করার জন্য একটি স্ট্যান্ডার্ড ক্লাস টেমপ্লেট ডিফাইন করা হয়েছে "StrValue" নামে। স্ট্রিং ভেরিয়েবল "StrValue" শব্দের একটি স্ট্রিং দিয়ে ইনিশিয়ালাইজ করা হয়েছে। আমাদের একটি স্ট্যান্ডার্ড cout স্টেটমেন্ট আছে যা স্ট্রিংটি যেনে ইনিশিয়ালাইজ করা হয়েছে সেটি প্রিন্ট করবে। তারপর, আমরা এই স্ট্রিংয়ের ওপর erase মেথড পারফর্ম করব।
erase মেথডের ভিতরে, আমরা ০ এবং ১ আর্গুমেন্ট হিসেবে পাস করেছি। মান "০" হলো স্ট্রিং "StrValue"-এ প্রথম ক্যারেক্টারের ইনডেক্স, এবং মান "১" হলো স্ট্রিংয়ে রাখা প্রথম ক্যারেক্টার। নির্দিষ্ট লোকেশনের পর, erase মেথড স্ট্রিং থেকে প্রদত্ত দৈর্ঘ্যের ক্যারেক্টার ডিলিট করবে। শেষে, আমাদের একটি প্রিন্ট স্টেটমেন্ট আছে প্রথম ক্যারেক্টার সরানোর পর স্ট্রিং প্রিন্ট করার জন্য।
#include
#include
int main()
{
std::string StrValue = "Happy Me";
std::cout << "String Before:" << StrValue << std::endl;
StrValue.erase(0, 1);
std::cout << "String After:" << StrValue << std::endl;
return 0;
}
নিচের আউটপুট নির্দিষ্ট স্ট্রিংয়ের ওপর erase মেথডের কাজ দেখাচ্ছে। আপনি দেখতে পাচ্ছেন, স্ট্রিংয়ের প্রাথমিক ক্যারেক্টার মুছে ফেলা হয়েছে:

উদাহরণ ২: C++-এ ইটারেটর মেথড ব্যবহার করে স্ট্রিংয়ের প্রথম ক্যারেক্টার সরানো
erase() মেথডের আরেকটি ওভারলোডেড অল্টারনেটিভ ইটারেটর মুছে ফেলা। এটি একটি ইটারেটর প্যারামিটার হিসেবে গ্রহণ করে এবং সেটি দ্বারা নির্দিষ্ট ক্যারেক্টার মুছে ফেলে। "StrValue" স্ট্রিংয়ের প্রথম ক্যারেক্টারকে নির্দেশকারী ইটারেটর পাস করে, আমরা স্ট্রিংয়ের প্রথম ক্যারেক্টার মুছে ফেলতে পারি।
নিচের প্রোগ্রামের main ফাংশনে আমরা erase মেথড ব্যবহার করেছি। main ফাংশনে স্ট্রিংয়ের একটি স্ট্যান্ডার্ড ফরম্যাট ডিফাইন করা হয়েছে। স্ট্রিং ভেরিয়েবল "StringIs" নামে তৈরি করা হয়েছে এবং ক্যারেক্টার স্ট্রিং দিয়ে ইনিশিয়ালাইজ করা হয়েছে। প্রথমে, আমরা erase ইটারেটর মেথড প্রয়োগ করার আগে স্ট্রিং প্রিন্ট করেছি।
তারপর, আমরা আগের স্ট্রিংয়ের erase মেথড আহ্বান করেছি। erase মেথডে "StrValue" স্ট্রিংয়ের begin ইটারেটর আছে যা স্ট্রিংয়ের প্রথম ক্যারেক্টারকে নির্দেশকারী একটি ইটারেটর রিটার্ন করে। যখন প্রথম ক্যারেক্টার রিটার্ন হয়, erase মেথড স্ট্রিং থেকে ক্যারেক্টারটি মুছে ফেলবে। তারপর, স্ট্রিং প্রিন্ট হবে, যার প্রথম ক্যারেক্টার সরানো হয়েছে।
#include
#include
int main()
{
std::string StringIs = "Programming Example";
std::cout << "String Before: " << StringIs << std::endl;
StringIs.erase(StringIs.begin());
std::cout << "String After: " << StringIs << std::endl;
return 0;
}
শেল আউটপুট দেখাচ্ছে যা erase ইটারেটর মেথডের আগে স্ট্রিং এবং প্রথম ক্যারেক্টার স্ট্রিং থেকে সরানো পরে স্ট্রিং।

উদাহরণ ৩: C++-এ প্রথম ক্যারেক্টার সরানোর আগে খালি স্ট্রিং চেক করা
string::erase ফাংশন ব্যবহার করার আগে, নিশ্চিত করুন যে একটি খালি স্ট্রিং নেই। ইনপুট সিকোয়েন্স যদি খালি হয়, প্রোগ্রাম একটি std::length এরর এক্সেপশন থ্রো করবে।
প্রোগ্রামে main ফাংশন আছে যেখানে স্ট্রিং ভেরিয়েবল "MyStr" ডিক্লেয়ার করা হয়েছে। স্ট্রিংটি ডিক্লেয়ার করার সময় স্ট্রিং ক্যারেক্টার দিয়ে ইনিশিয়ালাইজও করা হয়েছে। স্ট্রিং ভ্যালু শেলে প্রিন্ট হবে। তারপর, আমাদের একটি if স্টেটমেন্ট আছে যেখানে দিয়ে দিয়ে गयी স্ট্রিংয়ের ওপর কন্ডিশন লাগানো হয়েছে।
আমরা if কন্ডিশনের ভিতরে empty মেথড কল করেছি যাতে চেক করা যায় স্ট্রিং খালি নয়। তারপর, স্ট্রিংয়ের ওপর erase ইটারেটর মেথড ব্যবহার করা হয়েছে এবং নির্দিষ্ট স্ট্রিংয়ের প্রথম ক্যারেক্টার সরানো হয়েছে। শেল স্ক্রিনে স্ট্রিং প্রিন্ট হবে যার প্রথম ক্যারেক্টার স্ট্রিং থেকে সরানো হয়েছে।
#include
#include
int main()
{
std::string MyStr = "rainbow";
std::cout << "String Before:" << MyStr << std::endl;
if (!MyStr.empty()) {
MyStr.erase(MyStr.begin());
}
std::cout << "String Now:" << MyStr << std::endl;
return 0;
}
আমরা নিচের আউটপুট স্ট্রিংগুলো পেয়েছি।

উদাহরণ ৪: C++-এ মিলিত ক্যারেক্টারের সাথে প্রথম ক্যারেক্টার সরানো
এখন, আমাদের একটি উদাহরণ আছে প্রাথমিক ক্যারেক্টার সরানোর জন্য যদি সেটি একটি নির্দিষ্ট ক্যারেক্টারের সাথে মেলে, নিচের সিনট্যাক্স ব্যবহার করে:
নিচের প্রোগ্রামের main-এ স্ট্রিং ভেরিয়েবল স্ট্রিং ভ্যালু দিয়ে ইনিশিয়ালাইজ করা হয়েছে এবং "Name" নামে অ্যাসাইন করা হয়েছে। আমরা cout কমান্ড দিয়ে স্ট্রিং প্রদর্শন করেছি। তারপর, আমরা "ch" নামে অন্য একটি ভেরিয়েবল ডিফাইন করেছি char ডেটা টাইপ দিয়ে। char ভেরিয়েবল "ch"-কে একটি ক্যারেক্টার "k" অ্যাসাইন করা হয়েছে যা আগের স্ট্রিংয়ের প্রথম ক্যারেক্টার সাথে মেলে।
তারপর, if স্টেটমেন্ট ব্যবহার করে কন্ডিশন চেক করা হয়েছে যে ক্যারেক্টার ভ্যালু "k" আগের স্ট্রিংয়ের প্রথম ক্যারেক্টার ভ্যালুর সাথে মেলে কিনা। আমাদের front() ফাংশন আছে যা স্ট্রিংয়ের রেফারেন্সে প্রথম ক্যারেক্টার পাওয়ার জন্য ব্যবহৃত হয়। স্ট্রিংয়ের প্রাথমিক ক্যারেক্টার এরপর erase ইটারেটর দিয়ে সরানো হবে।
#include
#include
int main()
{
std::string Name = "Kalsoom";
std::cout << "Name Before: " << Name << std::endl;
char ch = 'K';
if (Name.front() == ch) {
Name.erase(Name.begin());
}
std::cout << "Name Now: " << Name << std::endl;
return 0;
}
আপনি দেখতে পাচ্ছেন, স্ট্রিং থেকে প্রথম ক্যারেক্টার সরানো হয়েছে নিচে:

উদাহরণ ৫: C++-এ substr() মেথড ব্যবহার করে স্ট্রিংয়ের প্রথম ক্যারেক্টার সরানো
স্ট্রিং string::erase মেথড দিয়ে ইন-প্লেস মডিফাই করা হয়। string::substr ফাংশন ব্যবহার করে, আপনি শেষ ক্যারেক্টার ছাড়া স্ট্রিংয়ের একটি কপি পেতে পারেন।
if কন্ডিশন ব্লকে স্ট্রিং "MyString" ওপর substr ফাংশন ব্যবহার করা হয়েছে। substr ফাংশনে প্রথম ক্যারেক্টার পজিশন এবং স্ট্রিংয়ের লেন্থ -১ পাস করা হয়েছে। এটি কলার স্ট্রিং অবজেক্ট থেকে একটি নতুন স্ট্রিং রিটার্ন করে যেটি নির্দিষ্ট ক্যারেক্টার ধারণ করে।
#include
#include
int main()
{
std::string MyString = "Bringing";
std::cout << "Original String: " << MyString << std::endl;
std::string n;
if (!MyString.empty()) {
n = MyString.substr(1, MyString.size() - 1);
}
std::cout << "Changed String: " << n << std::endl;
return 0;
}
substr মেথড স্ট্রিং থেকে ক্যারেক্টারটির প্রথম উপস্থিতি সরিয়ে দিয়েছে, जैसा कि নিচের শেলে দেখানো হয়েছে:

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