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

C++-এ ব্যবহারকারী-সংজ্ঞায়িত লিটারেল (User Defined Literals)


ভূমিকা

C++11 থেকে ব্যবহারকারী-সংজ্ঞায়িত লিটারেল (User Defined Literals - UDL) যোগ করা হয়েছে। C++-তে বিল্ট-ইন লিটারেল আছে (যেমন: 31 ইন্টিজার, 3.5 ডাবল, 'p' ক্যারেক্টার, "pq" স্ট্রিং), কিন্তু এগুলো সীমিত। প্রোগ্রামাররা কাঙ্খিত型 ডেটার জন্য নিজস্ব লিটারেল তৈরি করতে পারেন।

UDL-এর ضرورت

ধরুন, ওজন সংরক্ষণের জন্য একটি ভেরিয়েবল লাগে:

long double Weight = 3.5;

এখানে একক (unit) নেই (পাউন্ড? কিলোগ্রাম? গ্রাম?)। UDL ব্যবহার করে একক সংযুক্ত করা যায়:

weight = 5.6kg; ratio = 5.6kg / 2.1lb;

এটি কোড পঠনযোগ্য করে তোলে এবং কম্পাইল-টাইমে একক রূপান্তর সক্ষম করে।

C++ উদাহরণ

#include <iostream>
#include <iomanip>
using namespace std;

unsigned long long int operator"" _kb(unsigned long long int x) {
    return x * 1024;
}
unsigned long long int operator"" _b(unsigned long long int x) {
    return x;
}
unsigned long long int operator"" _mb(unsigned long long int x) {
    return x * 1024 * 1024;
}

int main() {
    unsigned long long int size = 24_kb;
    cout << "Size:" << size << endl;
    cout << "Few more MB:" << (size + 2_mb) << endl;
    cout << "Size Div:" << (10_kb / 2_kb) << endl;
    cout << "1KB = " << (8_b * 128_b) << endl;
    return 0;
}

আউটপুট

Size:24576
Few more MB:2121728
Size Div:5
1KB = 1024

ব্যাখ্যা

  • operator"" _kb - কিলোবাইট লিটারেল (x 1024)।
  • operator"" _b - বাইট লিটারেল।
  • operator"" _mb - মেগাবাইট লিটারেল (x 1024*1024)।
  • লিটারেল ব্যবহার: 24_kb, 2_mb, 10_kb, 8_b।
  1. C++-এ ক্যারেক্টার লিটারেল কী?

  2. C++-এ বুলিয়ান লিটারেল কী?

  3. C++-এ টোকেন বনাম আইডেন্টিফায়ার বনাম কিওয়ার্ড

  4. C++ টোকেন বলতে কী বোঝায়?