এই আর্টিকেলে, আমরা C++ STL-এ std::mbsrtowcs() ফাংশনের ওয়ার্কিং, সিনট্যাক্স এবং উদাহরণ আলোচনা করব।
std::mbsrtowcs() কী?
std::mbsrtowcs() ফাংশন C++ STL-এ একটি ইনবিল্ট ফাংশন, যা <cwchar> হেডার ফাইলে ডিফাইন করা আছে। mbsrtowcs() মানে এটি নাল-টার্মিনেটেড মাল্টিবাইট ক্যারেক্টার স্ট্রিংকে (যার প্রথম বাইট *src) এর ওয়াইড ক্যারেক্টার রিপ্রেজেন্টেশনে কনভার্ট করে। এই ফাংশনটি কনভার্শন অনুযায়ী ভ্যালু রিটার্ন করে।
সিনট্যাক্স
size_t mbsrtowcs( wchar_t* pwc, char** str, size_t n, mbstate_t* ps);
প্যারামিটার
ফাংশনটি নিচের প্যারামিটারগুলো গ্রহণ করে −
- pwc − আউটপুট স্টোর করার লোকেশনের পয়েন্টার।
- str − ইনপুট হিসেবে ব্যবহৃত ক্যারেক্টার স্ট্রিং।
- n − চেক করার বাইট সংখ্যা।
- ps − মাল্টিবাইট স্ট্রিং ইন্টারপ্রেট করার সময় স্টেট অবজেক্টের পয়েন্টার।
রিটার্ন ভ্যালু
এই ফাংশনটি নিচের কন্ডিশন অনুযায়ী ভিন্ন ভ্যালু রিটার্ন করে −
- 0 − ফাংশনটি শূন্য রিটার্ন করবে যখন str-এ কনভার্ট করার ক্যারেক্টার NULL হয়।
- 1…n− নাল-এন্ডিং ক্যারেক্টারগুলোর বাইট সংখ্যা যা কনভার্ট হয়ে *str-এ স্টোর হয়েছে।
- -1 − কনভার্শন সময় এরর হলে এই ভ্যালু मिलে, errno EILSEQ সেট হয়।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int main(){
setlocale(LC_ALL, "en_US.utf8");
const char* ch = "\u0777\u0755";
wchar_t arr[20];
mbstate_t hold = mbstate_t();
int highest = 10;
int val = mbsrtowcs ( arr, &ch, highest, &hold );
wcout << L"Wide characters are: "<< val << endl;
wcout << L"Given Wide character is: " << arr << endl;
return 0;
}
আউটপুট
Wide characters are: 2 Given Wide character is: ݷݕ
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
int main() {
setlocale(LC_ALL, "en_US.utf8");
const char* ch = u8"z\u00df\u6c34";
wchar_t arr[20];
mbstate_t hold = mbstate_t();
int highest = 10;
int val = mbsrtowcs ( arr, &ch, highest, &hold );
wcout << L"Total Wide characters are: "<< val << endl;
wcout << L"Given Wide character is: " << arr << endl;
return 0;
}
আউটপুট
Total Wide characters are: 3 Given Wide character is: zß水