Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

Header File clocale ใน C++

บทนำ

งานนี้แสดงการใช้งาน header file <clocale> ใน C++

<clocale> เป็นส่วนหนึ่งของ Localization Library ซึ่งเป็นส่วนหนึ่งของ C++ Standard Library เดิมอยู่ใน C Standard Library ชื่อ <locale.h>

ฟังก์ชันและการประกาศใน header นี้ใช้สำหรับงานที่ต้องการรูปแบบวันที่และสัญลักษณ์สกุลเงินของประเทศต่างๆ

ฟังก์ชันใน <clocale> ได้แก่ setlocale() และ localeconv()

Macro ที่กำหนดใน header นี้และใช้ในฟังก์ชันทั้งสอง:

  • LC_ALL - ตั้งค่าทุกอย่าง
  • LC_COLLATE - ส่งผลต่อ strcoll และ strxfrm
  • LC_CTYPE - ส่งผลต่อฟังก์ล์ชันตัวอักษรทั้งหมด
  • LC_MONETARY - ส่งผลต่อข้อมูลสกุลเงินจาก localeconv
  • LC_NUMERIC - ส่งผลต่อรูปแบบจุดทศนิยมและข้อมูลจาก localeconv
  • LC_TIME - ส่งผลต่อ strftime

localeconv()

ฟังก์ชัน localeconv() ตั้งค่าหรืออ่านข้อมูลที่ขึ้นอยู่กับ Locale

Syntax

Struct lconv* localeconv()

setlocale()

ฟังก์ชัน setlocale() ติดตั้ง System Locale ที่ระบุ และตั้งค่าข้อมูล Locale ตามโปรแกรมปัจจุบัน

Syntax

char* setlocale(int category, const char* locale)

ตัวอย่าง

Input: setlocale(LC_ALL, "en_GB")
s = setlocale(LC_ALL, NULL)
Output: C

setlocale() คืนค่า Pointer ไปยังสตริง ถ้าระบุได้จะคืน C Locale มิฉะนั้นคืน Null Pointer ในกรณีนี้คืน "C"

แนวทางในโปรแกรม

  • เรียก setlocale() ใน main() ตั้ง category = LC_MONETARY, locale = "en_GB"
  • สร้าง struct lconv ด้วย char pointer lc = 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;
}

ผลลัพธ์

£

ได้สัญลักษณ์ปอนด์ (£) สกุลเงินของสหราชอาณาจักร เพราะตั้ง LC_MONETARY และ locale "en_GB" (GB = Great Britain) แล้วใช้ lconv แสดงสัญลักษณ์สกุลเงิน