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

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


এই আর্টিকেলে, আমরা 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

  1. সি++-এ negative_binomial_distribution উদাহরণসহ (negative_binomial_distribution in C++ with Examples)

  2. সি++ STL-এ মাল্টিসেট max_size() উদাহরণসহ (multiset max_size() in C++ STL with Examples)

  3. C/C++-এ iswgraph() ফাংশন উদাহরণসহ

  4. C/C++-এ mbrtowc() ফাংশন