C++-এ <clocale> হেডার ফাইলটির ব্যবহার দেখানো হলো এই টাস্ক।
<clocale> হেডার ফাইলটি লোকালাইজেশন লাইব্রেরির অংশ যা আরও C++ স্ট্যান্ডার্ড লাইব্রেরির অংশ। মূলত এটি C স্ট্যান্ডার্ড লাইব্রেরিতে <locale.h> নামে ছিল।
এই হেডার ফাইলে থাকা ফাংশন এবং ডিক্লেশনগুলো বিভিন্ন দেশের ডেট ফরম্যাট এবং করেন্সি সিম্বল সম্পর্কিত কাজে ব্যবহৃত হয়।
<clocale> হেডার ফাইলে থাকা ফাংশনগুলো হল setlocale() এবং localeconv()
এই হেডার ফাইলে ডিফাইন করা ম্যাক্রোগুলো যেগুলো এই দুটি ফাংশনে ব্যবহার হয় সেগুলো হল −
LC_ALL-> এটি সব কিছু সেট করে।
LC_COLLATE-> এটি strcoll এবং strxfrm ফাংশনগুলোর ওপর প্রভাব ফেলে।
LC_CTYPE-> এটি সব ক্যারেক্টার ফাংশনগুলোর ওপর প্রভাব ফেলে।
LC_MONETARY-> এটি localeconv ফাংশন দ্বারা প্রদান করা মনিটারি ইনফরমেশনের ওপর প্রভাব ফেলে।
LC_NUMERIC-> এটি ডেসিমেল-পয়েন্ট ফরম্যাটিং এবং localeconv ফাংশন দ্বারা প্রদান করা ইনফরমেশনের ওপর প্রভাব ফেলে।
LC_TIME-> এটি strftime ফাংশনটির ওপর প্রভাব ফেলে।
localeconv()
localeconv() ফাংশনটি লোকেশন-ডিপেন্ডেন্ট ইনফরমেশন সেট বা রিড করে।
সিনট্যাক্স
localeconv()-এর সিনট্যাক্স নিচের মতো −
Struct lconv*localeconv()
setlocale()
setlocale() ফাংশনটি নির্দিষ্ট সিস্টেম লোকেল ইনস্টল করে এবং বর্তমান প্রোগ্রাম অনুযায়ী লোকেল ইনফরমেশন সেট করে।
সিনট্যাক্স
setlocale()-এর সিনট্যাক্স নিচের মতো−
char *setlocale(int category, const char *locale)
উদাহরণ
Input: setlocale(LC_ALL, "en_GB") s = setlocale(LC_ALL, NULL) Output: C
setlocale() একটি স্ট্রিংয়ের পয়েন্টার রিটার্ন করে, যদি সেটি আইডেন্টিফাই করতে পারে তবে C লোকেল রিটার্ন করবে অন্যথায় শুধু নাল পয়েন্টার রিটার্ন করবে এবং এই কেসে এটি “C” রিটার্ন করল।
নিচের প্রোগ্রামে ব্যবহৃত পদ্ধতি −
- প্রথমে main() ফাংশনের ভিতরে setlocale() ফাংশনটি কল করুন এবং ক্যাটেগরি হিসেবে LC_MONETARY এবং লোকেল হিসেবে en_GB সেট করুন।
- তারপর lconv স্ট্রাকচার তৈরি করুন char pointer-এ, ধরুন, lc এবং এটিকে localeconv() ফাংশন কল করার সমান রাখুন যাতে localeconv() ফাংশনটি আমাদের তৈরি করা স্ট্রাকচারটিকে পয়েন্টার রিটার্ন করতে পারে।
- তারপর printf স্টেটমেন্ট ব্যবহার করুন বর্তমান করেন্সি প্রিন্ট করার জন্য।
উদাহরণ
#include <iostream> #include <locale.h> using namespace std; int main() { setlocale(LC_MONETARY, "en_GB"); struct lconv* lc = localeconv(); printf("%s ", lc->currency_symbol); return 0; }
আউটপুট
যদি উপরের কোডটি রান করি তবে নিচের আউটপুট জেনারেট হবে −
£
আউটপুটে আমরা পাউন্ড সিম্বল পেলাম যা গ্রেট ব্রিটেনের করেন্সি কারণ setlocale ফাংশনে আমরা মনিটারি ক্যাটেগরি সিলেক্ট করলাম যা LC_MONETARY এবং লোকেল সেট করলাম "en_GB" যেখানে GB হল গ্রেট ব্রিটেনের সংক্ষিপ্ত রূপ। আরও আমরা lconv স্ট্রাকচার তৈরি করলাম এবং এটিকে গ্রেট ব্রিটেনের বর্তমান করেন্সি সিম্বল ডিসপ্লে করার জন্য ব্যবহার করলাম, সেটি £।