C++-এ ১৬-বিট ক্যারেক্টার রিপ্রেজেন্টেশন ব্যবহার করা যায়। c16rtomb() ফাংশনটি ১৬-বিট ক্যারেক্টারকে সংকীর্ণ মাল্টি-বাইট ক্যারেক্টার রিপ্রেজেন্টেশনে রূপান্তর করতে ব্যবহৃত হয়। এই ফাংশনটিও uchar.h হেডার ফাইলে পাওয়া যায়।
এই ফাংশন তিনটি প্যারামিটার নেয়:
- মাল্টি-বাইট ক্যারেক্টার সংরক্ষণের জন্য স্ট্রিং
- রূপান্তর করার ১৬-বিট ক্যারেক্টার
mbstate_tটাইপের অবজেক্টের পয়েন্টার, যা মাল্টি-বাইট স্ট্রিং ব্যাখ্যা করতে ব্যবহৃত হয়
সফল হলে এই ফাংশন ক্যারেক্টার অ্যারেতে লেখা বাইটের সংখ্যা রিটার্ন করে, ব্যর্থ হলে -1 রিটার্ন করে। নিচে উদাহরণ দেওয়া হলো:
উদাহরণ
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
int main() {
const char16_t myStr[] = u"Hello World";
char dest[50];
mbstate_t p{};
size_t length;
int j = 0;
while (myStr[j]) {
length = c16rtomb(dest, myStr[j], &p);
if ((length == 0) || (length > 50))
break;
for (int i = 0; i < length; ++i)
cout << dest[i];
j++;
}
return 0;
}
আউটপুট
Hello World