এই আর্টিকেলে, আমরা C++ STL-এ std::mbrtowc() ফাংশনের ওয়ার্কিং, সিনট্যাক্স এবং উদাহরণ আলোচনা করব।
std::mbrtowc() কী?
std::mbrtowc() ফাংশন C++ STL-এ একটি ইনবিল্ট ফাংশন, যা <cwchar> হেডার ফাইলে ডিফাইন করা আছে। mbrtowc() মানে এটি ন্যারো মাল্টিবাইট ক্যারেক্টার স্ট্রিংকে ওয়াইড ক্যারেক্টারে কনভার্ট করে। এই ফাংশনটি একটি ন্যারো মাল্টিবাইট ক্যারেক্টারের ওয়াইড ক্যারেক্টার রিপ্রেজেন্টেশনে কনভার্ট করতে ব্যবহৃত হয়।
সিনট্যাক্স
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 − আমরা -2 পাব যখন পরবর্তী n বাইট অসম্পূর্ণ কিন্তু এপর্যন্ত ভ্যালিড মাল্টিবাইট ক্যারেক্টার।
- -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