এই আর্টিকেলে, আমরা C++ STL-এ std::mbrtoc32() ফাংশনের ওয়ার্কিং, সিনট্যাক্স এবং উদাহরণ আলোচনা করব।
std::mbrtoc32() কী?
std::mbrtoc32() ফাংশন C++ STL-এ একটি ইনবিল্ট ফাংশন, যা <cuchar> হেডার ফাইলে ডিফাইন করা আছে। এই ফাংশনটি একটি ন্যারো মাল্টিবাইট ক্যারেক্টারের UTF-32-ক্যারেক্টার রিপ্রেজেন্টেশনে কনভার্ট করতে ব্যবহৃত হয়।
যদি সংশ্লিষ্ট ক্যারেক্টার পয়েন্টার NULL না হয়, এবং অন্যান্য সব প্যারামিটারও গ্রহণযোগ্য হয়, তবে এটি সংশ্লিষ্ট ৩২-বিট ক্যারেক্টার কনভার্ট করবে।
সিনট্যাক্স
size_t mbrtoc32( char32_t* pc32, char* str, size_t n, mbstate_t* ps);
প্যারামিটার
ফাংশনটি নিচের প্যারামিটারগুলো গ্রহণ করে −
- pc32 − আউটপুট স্টোর করার লোকেশনের পয়েন্টার।
- str − ইনপুট হিসেবে ব্যবহৃত ক্যারেক্টার স্ট্রিং।
- n − চেক করার বাইট সংখ্যা।
- ps − মাল্টিবাইট স্ট্রিং ইন্টারপ্রেট করার সময় স্টেট অবজেক্টের পয়েন্টার।
রিটার্ন ভ্যালু
এই ফাংশনটি নিচের কন্ডিশন অনুযায়ী ভিন্ন ভ্যালু রিটার্ন করে −
- 0 − ফাংশনটি শূন্য রিটার্ন করবে যখন str-এ কনভার্ট করার ক্যারেক্টার NULL হয়।
- 1…n − ক্যারেক্টার স্ট্রিং *str থেকে কনভার্ট হওয়া মাল্টিবাইট ক্যারেক্টারের বাইট সংখ্যা।
- -3 − যদি সারোগেট পেয়ার থাকে অর্থাৎ, char32_t মাল্টি-char32_t থেকে আসে। ইনপুট থেকে কোনো বাইট তৈরি হয় না।
- -2 − আমরা -2 পাব যখন পরবর্তী n বাইট অসম্পূর্ণ কিন্তু এপর্যন্ত ভ্যালিড মাল্টিবাইট ক্যারেক্টার।
- -1 − আমরা -1 পাব যখন এনকোডিং এরর ফেস করি, *pc32-এ কিছুই লেখা হয় না।
উদাহরণ
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
int main(void) {
char32_t hold;
char str[] = "I";
mbstate_t arr{};
int len;
// ফাংশন ইনিশিয়ালাইজ
len = mbrtoc32(&hold, str, MB_CUR_MAX, &arr);
if (len < 0) {
perror("conversion failed");
exit(-1);
}
cout << "String is: " << str << endl;
cout << "Length is: " << len << endl;
printf("32-bit character = 0g%02hd\n", hold);
}
আউটপুট
String is: I Length is: 1 32-bit character = 0g73
উদাহরণ
#include <cstdio>
#include <cstdlib>
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
int main(void){
char32_t hold;
char str[] = "I";
mbstate_t arr{};
int len;
// ফাংশন ইনিশিয়ালাইজ
len = mbrtoc32(&hold, str, MB_CUR_MAX, &arr);
if (len < 0){
perror("conversion failed");
exit(-1);
}
cout << "String is: " << str << endl;
cout << "Length is: " << len << endl;
printf("32-bit character = 0x%08hx\n", hold);
}
আউটপুট
String is: I Length is: 1 32-bit character = 0x0x000000490