এই নিবন্ধে আমরা C++ STL-এ std::mbrtowc() ফাংশনের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
std::mbrtowc() কি?
std::mbrtowc() ফাংশন হল C++ STL-এ একটি অন্তর্নির্মিত ফাংশন, যা
সিনট্যাক্স
size_t mbrtowc( wchar_t* pwc, char* str, size_t n, mbstate_t* ps);
পরামিতি
ফাংশন নিম্নলিখিত প্যারামিটার(গুলি) −
গ্রহণ করে- pwc − এটি সেই অবস্থানের নির্দেশক যেখানে আমরা আউটপুট সংরক্ষণ করতে চাই।
- str − ক্যারেক্টার স্ট্রিং যা ইনপুট হিসেবে ব্যবহৃত হয়।
- n − এটা হল বাইটের সংখ্যা যা চেক করতে হবে।
- ps − যখন আমরা মাল্টিবাইট স্ট্রিং ব্যাখ্যা করি তখন এটি স্টেট অবজেক্টের নির্দেশক৷ ৷
রিটার্ন মান
এই ফাংশন রিটার্ন মান নিম্নলিখিত শর্ত অনুযায়ী পৃথক হয় −
- 0 − যখন str-এর অক্ষরটি NULL হয় তখন ফাংশনটি শূন্য দেখাবে।
- 1…n − মাল্টিবাইট অক্ষরের বাইটের সংখ্যা যা অক্ষর স্ট্রিং *str থেকে রূপান্তরিত হয়।
- -2 − পরবর্তী n বাইট অসম্পূর্ণ হলে আমরা -2 পাব কিন্তু এখন পর্যন্ত একটি বৈধ মাল্টিবাইট অক্ষর।
- -1 − যখন আমরা একটি এনকোডিং ত্রুটির সম্মুখীন হই তখন আমরা -1 পাই, *pwc-এ কিছুই লেখা হয় না।
উদাহরণ
#include <bits/stdc++.h> using namespace std; void print_(const char* ch){ mbstate_t temp = mbstate_t(); int cal = strlen(ch); const char* i = ch + cal; int total; wchar_t con; while ((total = mbrtowc(&con, ch, i - ch, &temp)) > 0){ wcout << "Next " << total <<" bytes are the character " << con << '\n'; ch += total; } } int main(){ setlocale(LC_ALL, "en_US.utf8"); const char* len = u8"z\u00df\u6c34"; print_(len); }
আউটপুট
Next 1 bytes are the character z Next 2 bytes are the character ß Next 3 bytes are the character 水
উদাহরণ
#include <bits/stdc++.h> using namespace std; void print_(const char* ch){ mbstate_t temp = mbstate_t(); int cal = strlen(ch); const char* i = ch + cal; int total; wchar_t con; while ((total = mbrtowc(&con, ch, i - ch, &temp)) > 0){ wcout << "Next " << total <<" bytes are the character " << con << '\n'; ch += total; } } int main(){ setlocale(LC_ALL, "en_US.utf8"); const char* len = u8"\xE2\x88\x83y\xE2\x88\x80x\xC2"; print_(len); }
আউটপুট
Next 3 bytes are the character ∃ Next 1 bytes are the character y Next 3 bytes are the character ∀ Next 1 bytes are the character x