সি ++ স্ট্রিংস



স্ট্রিং

সি ++ আমাদের প্রোগ্রামে স্ট্রিং তৈরি এবং ব্যবহারের জন্য তিনটি প্রাথমিক উপায় সরবরাহ করে:

  1. চর উপাদানগুলির একটি অ্যারে ব্যবহার করে
  2. ব্যবহার string শ্রেণী
  3. ব্যবহার wchar_t প্রশস্ত অক্ষরের জন্য

অক্ষরের অ্যারে

স্ট্রিং অক্ষরের একটি ক্রম sequ char ডেটা টাইপ সি ++ এর মধ্যে একটি একক অক্ষর উপস্থাপন করতে ব্যবহৃত হয়। সুতরাং আপনি যদি আপনার প্রোগ্রামটিতে একটি স্ট্রিং ব্যবহার করতে চান তবে আপনি অক্ষরের একটি অ্যারে ব্যবহার করতে পারেন। অক্ষরের অ্যারে ব্যবহার করে স্ট্রিংয়ের ঘোষণা এবং সংজ্ঞাটি অন্য কোনও ডেটা ধরণের অ্যারের সংজ্ঞা এবং সংজ্ঞার অনুরূপ:

//define an array of chars with 10 elements
char msg[10] = { 'M', 'E', 'S', 'S', 'A', 'G', 'E', '\0' };

যে কোনও স্ট্রিং একটি শেষ নাল অক্ষর '\ 0' দিয়ে শেষ হয়। এই জাতীয় উপায়ে একটি অ্যারে সংজ্ঞাটি নুল অক্ষর '\ 0' কে শেষ উপাদান হিসাবে অন্তর্ভুক্ত করা উচিত। উপরের ক্ষেত্রে একটি অ্যারের ক্ষমতা 10 হয় তবে আমরা এর মধ্যে কেবল 8 টি ব্যবহার করেছি। অ্যারের বাকী দুটি অক্ষর সংজ্ঞায়িত করা হবে না।

নীচে প্রদর্শিত হিসাবে গতিশীল দৈর্ঘ্যের অক্ষরের অ্যারে ঘোষণা এবং সংজ্ঞা দেওয়ার অন্য উপায়:

char msg2[] = { 'M', 'E', 'S', 'S', 'A', 'G', 'E', '\0' };

উপরের ক্ষেত্রে বরাদ্দ মেমরির পরিমাণ হ'ল অক্ষরের ক্রম সংরক্ষণ করার জন্য ঠিক একই রকম হবে।

অক্ষরের অ্যারে শুরু করার সহজতম উপায় হ'ল স্ট্রিং আক্ষরিক ব্যবহার ডাবল উদ্ধৃতিতে নীচের মত দেখানো হয়েছে:

char msg3[] = "Message";

আপনি থেকে ফাংশনগুলি ব্যবহার করে চর অ্যারেতে কিছু বেসিক অপারেশন করতে পারেন সিস্ট্রিং গ্রন্থাগার যেমন:

একটি স্ট্রিং অন্য কপি করুন

strcpy_s(destination, source)

নীচে ব্যবহারের ডেমো রয়েছে strcpy_s
char msg[10] = { 'M', 'E', 'S', 'S', 'A', 'G', 'E', '\0' };
char dest[20];
strcpy_s(dest, msg);
cout << "String copied from msg = " << dest << endl;

উপরের উদাহরণের আউটপুট নীচে প্রদর্শিত হবে

স্ট্রিংটি = = MESSAGE থেকে অনুলিপি করা হয়েছে

একটি স্ট্রিংকে অন্য একটিতে সংযুক্ত করুন

strcat_s(string1, string2)

স্ট্রিং 2 স্ট্রিং 1 এর শেষে যুক্ত হবে
//declare 2 messages
char string1[20] = "Good";
char string2[] = " Morning";
//concatenate strings
strcat_s(string1, string2);
cout << string1 << endl;

প্রোগ্রামের উপরের আউটপুট ওএস হবে:

সুপ্রভাত

বিঃদ্রঃ: স্ট্রিং 1 দিয়ে এটি যুক্ত করতে আপনার স্ট্রিং 2 এ পর্যাপ্ত ফাঁকা জায়গা থাকতে হবে।

স্ট্রিংয়ের দৈর্ঘ্য পান

strlen(string)

cout << "Length of the string 2 is " << strlen(string2) << endl;

উপরের কোডের আউটপুট হবে

স্ট্রিং 2 এর দৈর্ঘ্য 8

স্ট্রিং: "সকাল" 7 টি অক্ষর এবং 8 টিতে সংরক্ষণ করা হয়th চরিত্রটি নাল অক্ষর - '\ 0'

দুটি স্ট্রিং তুলনা করুন

strcmp(string1, string2)

এই ফাংশনটি ফিরে আসবে 0, যদি স্ট্রিংগুলি সমান হয়; নেতিবাচক মান, যদি স্ট্রিং 1 হয় কম স্ট্রিং 2 এবং ধনাত্মক স্ট্রিং 1 হলে মান বৃহত্তর স্ট্রিং 2 এর চেয়ে বেশি।
//declare two strings
char str1[100];
char str2[100];
//get user input of strings:
cout << "Please enter the first string\n";
cin >> str1;
cout << "Please enter the second string\n";
cin >> str2;
//compare strings
int result = strcmp(str1, str2);
if (result == 0)
{
	//strings are equals
	cout << str1 << " is equal to " << str2 << endl;
}
else
{
	if (result > 0)//str1 is greater
		cout << str1 << " is greater than " << str2 << endl;
	else//str2 is greater
		cout << str1 << " is less than " << str2 << endl;
}

নীচে উপরের প্রোগ্রামের আউটপুট দেওয়া আছে


প্রথম স্ট্রিং প্রবেশ করুন
অ আ ক খ
দ্বিতীয় স্ট্রিং প্রবেশ করুন
আব্দ
abc abd এর চেয়ে কম

strcmp শব্দকোষ (বর্ণানুক্রমিক) ক্রমে স্ট্রিংগুলির তুলনা করে। স্ট্রিংয়ের জন্য "এর চেয়ে কম" অর্থ "কুকুর" এর চেয়ে "কুকুর" কম কারণ "কুকুর" এর আগে বর্ণমালাই আসে "কুকুর"।

স্ট্রিং ক্লাস

স্ট্যান্ডার্ড সি ++ লাইব্রেরি দ্বারা সরবরাহিত ক্লাস ব্যবহার করে স্ট্রিংগুলি উপস্থাপনের আরেকটি উপায়। এই শ্রেণীর নামকরণ করা হয়েছে string এবং এটিতে C ++ তে গৃহস্থালি অ্যারের চেয়ে অনেক বেশি কার্যকারিতা রয়েছে। আপনার প্রোগ্রামগুলিতে "স্ট্রিং" বর্গ ব্যবহার করা আপনাকে আরও বেশি দক্ষতা সরবরাহ করে। আপনার প্রোগ্রামে স্ট্রিংগুলি ব্যবহার করতে আপনাকে নীচের অন্তর্ভুক্ত বিবৃতি যুক্ত করতে হবে:

#include <string>

এই হেডার ফাইলটি অন্তর্ভুক্ত করার পরে আপনি আপনার প্রোগ্রামের স্ট্রিং অবজেক্টগুলি ব্যবহার করতে সক্ষম হবেন। এখানে স্ট্রিং ঘোষণা এবং সংজ্ঞায়নের উদাহরণ রয়েছে:
string s1 = "Have a";
string s2 = " nice day";

সঙ্গে কাজ স্ট্রিং ক্লাস খুব সহজ।

সংঘবদ্ধ স্ট্রিংস

স্ট্রিংগুলিতে সংক্ষেপে যুক্ত চিহ্ন ব্যবহার করুন:

string s3 = s1 + s2;
cout << s3 << endl;

নীচে উপরের কোডের আউটপুট দেওয়া আছে

আপনার দিনটি শুভ হোক

একটি স্ট্রিংয়ের দৈর্ঘ্য

একটি স্ট্রিংয়ের দৈর্ঘ্য পেতে উদাহরণস্বরূপ, "এস 3", আপনি নিম্নলিখিত ফাংশনটি ব্যবহার করতে পারেন

s3.length()

স্ট্রিং দৈর্ঘ্য পাওয়ার উদাহরণ
cout << "Length of s3 is " << s3.length() << endl;

নীচে উপরের কোডের আউটপুট দেওয়া আছে

এস 3 এর দৈর্ঘ্য 15

একটি স্ট্রিং অন্য কপি করুন

অন্য একটি স্ট্রিং অনুলিপি করতে কেবল অ্যাসাইনমেন্ট অপারেটর ব্যবহার করুন

string s4 = s2;
cout << s4 << endl;

নীচে কোড উপরের আউটপুট

সুন্দর দিন

স্ট্রিংকে ধ্রুবক অক্ষরের অ্যারে রূপান্তর করুন

কখনও কখনও এটি স্ট্রিং অবজেক্টকে ধ্রুবক চর অ্যারে রূপান্তর করতে দরকারী। আপনি এটি ব্যবহার করে এটি করতে পারেন c_str() নীচে প্রদর্শিত হিসাবে ফাংশন

const char* cstr = s3.c_str();

স্ট্রিং ফাঁকা আছে কিনা তা যাচাই করুন

আপনি ব্যবহার করতে পারেন empty() স্ট্রিং ফাঁকা কিনা তা নির্ধারণ করার জন্য স্ট্রিংয়ের ক্রিয়া। যদি একটি স্ট্রিং ফাঁকা থাকে তবে ফাংশন করুন খালি () ফিরে আসবে true অন্যভাবে false

নীচের কোডগুলি কীভাবে ব্যবহার করবেন তা দেখানো হয়েছে empty()

if (s4.empty())
	cout << "s4 is empty" << endl;
else
	cout << s4 << endl;

স্ট্রিং ক্লাস প্রোগ্রামারকে স্ট্রিং ম্যানিপুলেট করার জন্য প্রচুর ক্ষমতা সরবরাহ করে তবে আমরা এখন কেবলমাত্র প্রাথমিক বিষয়গুলি নিয়ে আলোচনা করছি। আমরা পরবর্তী বিষয়গুলিতে স্ট্রিং ক্লাস সম্পর্কে আরও কভার করব।

প্রশস্ত চরিত্রের wchar_t

প্রশস্ত চরিত্র wchar_t একটি ডাটা টাইপ যা সাধারণ অক্ষরের ডেটা টাইপের চেয়ে আকার বেশি। এই ডেটাটাইপটি "2 বা 4" বাইট দখল করে। এই ধরণের স্ট্রিং প্রতিনিধিত্ব করতে বর্ধিত অক্ষর সেট ব্যবহার করার ক্ষমতা সরবরাহ করে। চীনা, জাপানিদের মতো আন্তর্জাতিক ভাষা যখন ব্যবহৃত হয় তখন বেশিরভাগ wchar_t ডেটাটাইপ ব্যবহৃত হয়। সি ++ প্রতিনিধিত্ব করতে ডেটা টাইপ অন্তর্নির্মিত সরবরাহ করে wchar_t বিস্তৃত অক্ষর।

প্রশস্ত চরিত্রের ভেরিয়েবলের ঘোষণাটি নিম্নলিখিত উপায়ে করা যেতে পারে:

wchar_t wideString;

বিস্তৃত অক্ষরের একটি অ্যারে ব্যবহার করতে আপনাকে নীচের চিত্রের মতো wchar_t এর অ্যারে ঘোষণা করতে হবে:
wchar_t wideString[100];

সাথে কাজ করা wchar_t টাইপ করুন আপনি অন্তর্ভুক্ত আছে wchar আপনার প্রোগ্রামে গ্রন্থাগারটি নীচে প্রদর্শিত হয়েছে:
#include <wchar.h>

ডাব্লুচার লাইব্রেরি প্রশস্ত অক্ষরের সাথে কাজ করার জন্য বিভিন্ন ফাংশন এবং ধ্রুবক সরবরাহ করে। সেখানে বেশ কয়েকটি কনস্ট্যান্ট রয়েছে wchar গ্রন্থাগার:
  • নাল - নাল পয়েন্টার ধ্রুবক প্রতিনিধিত্ব করে।
  • WCHAR_MAX - whcar_t এর সর্বাধিক মান প্রতিনিধিত্ব করে
  • WCHAR_MIN - wchar_t এর সর্বনিম্ন মানকে উপস্থাপন করে।
  • ওয়েফ - কনস্ট্যান্ট ফাইলের শেষ নির্দেশ করতে ব্যবহৃত হয় indicate

প্রশস্ত অক্ষরের স্ট্রিংয়ের মান নির্ধারণ করতে আপনাকে ব্যবহার করতে হবে swprintfফাংশন:

int swprintf (wchar_t*  destinationString, size_t length, const wchar_t* formatString, ...);

এখানে প্যারামিটারগুলি হ'ল:
  • গন্তব্য স্ট্রিং - প্রশস্ত অক্ষর যা ফর্ম্যাট ডেটা ধারণ করে। এটি wchar_t এর অ্যারে বা একক প্রশস্ত অক্ষর হতে পারে।
  • দৈর্ঘ্য - অক্ষরের সংখ্যা লিখিত হয়েছে। আপনার মনে রাখতে হবে স্ট্রিংয়ের শেষে নাল অক্ষরের জন্য স্ট্রিংয়ের দৈর্ঘ্য এক এক করে বাড়িয়ে দেওয়া।
  • ফর্ম্যাট স্ট্রিং - স্ট্রিং ফর্ম্যাট অনুযায়ী ডেটা লিখতে ব্যবহৃত হয়।
  • … - প্যারামিটারগুলি বিন্যাসের স্ট্রিংয়ের সাথে ব্যবহার করতে হবে।

সাফল্যের সাথে এই ফাংশনের রিটার্ন মান হ'ল অক্ষরের সংখ্যা লিখি।

নীচে একটি উদাহরণ দেওয়া আছে

swprintf(wideString, 6, L"HELLO");

উপরের ক্ষেত্রে, ফর্ম্যাট স্ট্রিংটি একটি সরল স্ট্রিং এবং স্ট্রিংকে একটিতে রূপান্তর করতে "হেল্লো" এর আগে "এল" অক্ষর ব্যবহৃত হয় const wchar_t*

পরবর্তী উদাহরণটি ফর্ম্যাট স্পেসিফায়ারগুলির সাথে ফর্ম্যাট স্ট্রিংটি কীভাবে ব্যবহার করবেন তা দেখায়:

swprintf(myMessage, 13, L"My age is %d ", 20);

উপরের ক্ষেত্রে মাইমেসেজ পরিবর্তনশীল থাকবে "আমার বয়স 20 বছর".

কিছু ফর্ম্যাট স্পেসিফায়ারের তালিকাটি নীচে সারণিতে উপস্থাপন করা হয়েছে:

 স্পেসিফায়ারআদর্শ
 d, iদশমিক বা পূর্ণসংখ্যা যুক্তি একটি পূর্ণসংখ্যা মান
 Uস্বাক্ষরবিহীন পূর্ণসংখ্যা
 Oঅক্টাল পূর্ণসংখ্যা
 এক্স, এক্সহেক্সাডেসিমাল পূর্ণসংখ্যা
 Fভাসমান পয়েন্টের মান
 Eবৈজ্ঞানিক ভাসমান পয়েন্ট
 cচরিত্র
 sস্ট্রিং
 nপয়েন্টার টু ইনট

প্রশস্ত অক্ষর মুদ্রণের জন্য আমাদের ব্যবহার করা উচিত wpritnf ফাংশন:

int wprintf (const wchar_t* formatString, ...);

wprintf নির্দিষ্ট ফর্ম্যাট সহ স্ট্যান্ডার্ড আউটপুটে প্রশস্ত অক্ষর লিখুন। উদাহরণস্বরূপ, আমরা উপরের কোডে ব্যবহৃত দুটি প্রশস্ত অক্ষরের স্ট্রিংয়ের মান নীচে হিসাবে মুদ্রণ করতে পারি
wprintf(wideString);
wprintf(myMessage);

স্ট্যান্ডার্ড আউটপুটটিতে প্রশস্ত অক্ষর লিখতে আপনি ব্যবহার করতে পারেন wcout আপনি যেমন ব্যবহার করেছেন তেমনভাবে আপত্তি করুন cout আউটপুট ডেটা।
wcout << "Use of wcout " << wideString << endl;

কনসোল থেকে বিস্তৃত অক্ষর পড়তে আপনাকে ব্যবহার করতে হবে wcin পরিবর্তে cin
wchar_t name[50];
cout << "Enter your name" << endl;
wcin >> name;
cout << endl << "Your name is ";
wprintf(L"%s", name);