C++ এ, আমরা 16-বিট অক্ষর উপস্থাপনা ব্যবহার করতে পারি। c16rtomb() ফাংশনটি 16-বিট অক্ষর উপস্থাপনাকে সংকীর্ণ মাল্টি-বাইট অক্ষর উপস্থাপনায় রূপান্তর করতে ব্যবহৃত হয়। আমরা uchar.h হেডার ফাইলের ভিতরে এই ফাংশনটি খুঁজে পেতে পারি।
এই ফাংশন তিনটি পরামিতি লাগে. এগুলো হল -
- যে স্ট্রিংটিতে মাল্টি-বাইট অক্ষর সংরক্ষণ করা হবে
- রূপান্তর করার জন্য 16-বিট অক্ষর
- টাইপ 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); //get length from c16rtomb() method if ((length == 0) || (length > 50)) break; for (int i = 0; i < length; ++i) cout << dest[i]; j++; } }
আউটপুট
Hello World