Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C++

Header clocale trong C++

<clocale> là header của thư viện bản địa hóa (localization library), cung cấp hỗ trợ định dạng ngày tháng, ký hiệu tiền tệ theo quốc gia. Ban đầu từ C <locale.h>.

Các macro phân loại locale

  • LC_ALL: Tất cả các hạng mục
  • LC_COLLATE: Sắp xếp chuỗi (strcoll, strxfrm)
  • LC_CTYPE: Phân loại ký tự (isalpha, toupper...)
  • LC_MONETARY: Định dạng tiền tệ (localeconv)
  • LC_NUMERIC: Định dạng số (dấu thập phân, grouping)
  • LC_TIME: Định dạng thời gian (strftime)

Hai hàm chính

setlocale()

Thiết lập/đọc locale hiện tại.

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

Trả về con trỏ chuỗi locale mới, hoặc NULL nếu thất bại.

localeconv()

Trả về con trỏ struct lconv chứa thông tin định dạng số/tiền tệ của locale hiện tại.

struct lconv* localeconv();

Ví dụ: Lấy ký hiệu tiền tệ Anh

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

int main() {
    setlocale(LC_MONETARY, "en_GB");
    struct lconv* lc = localeconv();
    cout << "Currency symbol: " << lc->currency_symbol << endl;
    cout << "Decimal point: " << lc->decimal_point << endl;
    cout << "Thousands sep: " << lc->thousands_sep << endl;
    return 0;
}

Kết quả

Currency symbol: £
Decimal point: .
Thousands sep: ,

Giải thích: setlocale(LC_MONETARY, "en_GB") thiết lập locale tiền tệ Anh. localeconv() trả về struct chứa currency_symbol = "£".

Lưu ý: Locale phụ thuộc hệ thống. "en_GB" có thể không có trên mọi máy. Dùng setlocale(LC_ALL, "") để lấy locale mặc định của môi trường.