কম্পিউটার টিউটোরিয়াল

C/C++-তে mbrtoc16() ফাংশন উদাহরণসহ


এই আর্টিকেলে, আমরা C++ STL-এ std::mbrtoc16() ফাংশনের ওয়ার্কিং, সিনট্যাক্স এবং উদাহরণ আলোচনা করব।

std::mbrtoc16() কী?

std::mbrtoc16() ফাংশন C++ STL-এ একটি ইনবিল্ট ফাংশন, যা <cuchar> হেডার ফাইলে ডিফাইন করা আছে। এই ফাংশনটি একটি ন্যারো মাল্টিবাইট ক্যারেক্টারের UTF-16-ক্যারেক্টার রিপ্রেজেন্টেশনে কনভার্ট করতে ব্যবহৃত হয়।

যদি সংশ্লিষ্ট ক্যারেক্টার পয়েন্টার NULL না হয়, এবং অন্যান্য সব প্যারামিটারও গ্রহণযোগ্য হয়, তবে এটি সংশ্লিষ্ট ১৬-বিট ক্যারেক্টার কনভার্ট করবে।

সিনট্যাক্স

size_t mbrtoc16( char16_t* pc16, char* str, size_t n, mbstate_t* ps);

প্যারামিটার

ফাংশনটি নিচের প্যারামিটারগুলো গ্রহণ করে −

  • pc16 − আউটপুট স্টোর করার লোকেশনের পয়েন্টার।
  • str − ইনপুট হিসেবে ব্যবহৃত ক্যারেক্টার স্ট্রিং।
  • n − চেক করার বাইট সংখ্যা।
  • ps − মাল্টিবাইট স্ট্রিং ইন্টারপ্রেট করার সময় স্টেট অবজেক্টের পয়েন্টার।

রিটার্ন ভ্যালু

এই ফাংশনটি নিচের কন্ডিশন অনুযায়ী ভিন্ন ভ্যালু রিটার্ন করে −

  • 0 − ফাংশনটি শূন্য রিটার্ন করবে যখন str-এ কনভার্ট করার ক্যারেক্টার NULL হয়।
  • 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;
    // ফাংশন ইনিশিয়ালাইজ
    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

  1. C/C++-তে putwchar() ফাংশন

  2. C/C++-তে mbrtoc32() ফাংশন উদাহরণসহ

  3. C/C++-তে mbsrtowcs() ফাংশন

  4. C/C++-তে system() ফাংশন: কম্যান্ড এক্সিকিউশন