এই নিবন্ধে আমরা C++ STL-এ std::mbrtoc16() ফাংশনের কাজ, সিনট্যাক্স এবং উদাহরণ নিয়ে আলোচনা করব।
std::mbrtoc16() কি?
std::mbrtoc16() ফাংশন হল C++ STL-এ একটি অন্তর্নির্মিত ফাংশন, যা
যদি সংশ্লিষ্ট অক্ষর পয়েন্টারটি শূন্য না হয়, এবং অন্যান্য সমস্ত পরামিতিও গ্রহণ করা হয় তবে এটি সংশ্লিষ্ট 16-বিট অক্ষরকে রূপান্তর করবে।
সিনট্যাক্স
size_t mbrtoc16( char16_t* pc16, char* str, size_t n, mbstate_t* ps);
পরামিতি
ফাংশন নিম্নলিখিত প্যারামিটার(গুলি) −
গ্রহণ করে- pc16 − এটি সেই অবস্থানের নির্দেশক যেখানে আমরা আউটপুট সংরক্ষণ করতে চাই।
- str − ক্যারেক্টার স্ট্রিং যা ইনপুট হিসেবে ব্যবহৃত হয়।
- n − এটা হল বাইটের সংখ্যা যা চেক করতে হবে।
- ps − যখন আমরা মাল্টিবাইট স্ট্রিং ব্যাখ্যা করি তখন এটি স্টেট অবজেক্টের নির্দেশক৷ ৷
রিটার্ন মান
এই ফাংশন রিটার্ন মান নিম্নলিখিত শর্ত অনুযায়ী পৃথক হয় −
- 0 − যখন str-এর অক্ষরটি রূপান্তরিত করতে হবে তখন ফাংশনটি শূন্য দেবে৷
- 1…n − মাল্টিবাইট অক্ষরের বাইটের সংখ্যা যা অক্ষর স্ট্রিং *str. থেকে রূপান্তরিত হয়
- -3 − যদি একটি সারোগেট জোড়া থাকে মানে, char16_t একটি মাল্টি-char16_t থেকে। ইনপুট থেকে কোনো বাইট তৈরি করা হবে না।
- -2 − আমরা -2 পাব যখন পরবর্তী n বাইট অসম্পূর্ণ কিন্তু এখন পর্যন্ত বৈধ মাল্টিবাইট অক্ষর৷
- -1 − আমরা একটি এনকোডিং ত্রুটির সম্মুখীন হলে -1 পাই, *pc16 এ কিছুই লেখা হয় না।
উদাহরণ
#include <cstdio> #include <cstdlib> #include <iostream> #include <uchar.h> #include <wchar.h> using namespace std; int main(void){ char16_t hold; char str[] = "I"; mbstate_t arr{}; int len; // initializing the function len = mbrtoc16(&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("16-bit character = 0g%02hd\n", hold); }
আউটপুট
String is: I Length is: 1 16-bit character = 0g73