Cライブラリ関数 -localeconv()

C標準ライブラリ - <locale.h>

説明

localeconv()C標準ライブラリ<locale.h>の関数の1つで、現在のロケール設定に関連する数値および通貨の書式情報を取得するために使用されます。これは、struct lconv構造体へのポインタを返し、その構造体には現在のロケール設定のローカライズされた書式情報が含まれています。

宣言

以下は localeconv() 関数の宣言です。

#include <locale.h>

struct lconv *localeconv(void);

引数

  • NA

戻り値

  • 返されるのはstruct lconv構造体へのポインタであり、その構造体には現在のロケール設定のローカライズされた情報が含まれています。

現在のロケールstruct lconvのポインタの構造は次のとおりです:

struct lconv {
    char *decimal_point;       // 小数点字符
    char *thousands_sep;       // 千位分隔符
    char *grouping;            // 数字分组方式

    char *int_curr_symbol;     // 国际货币符号
    char *currency_symbol;     // 本地货币符号
    char *mon_decimal_point;   // 货币小数点字符
    char *mon_thousands_sep;   // 货币千位分隔符
    char *mon_grouping;        // 货币分组方式
    char *positive_sign;       // 正数符号
    char *negative_sign;       // 负数符号

    char int_frac_digits;      // 国际小数位数
    char frac_digits;          // 本地小数位数
    char p_cs_precedes;        // 正值货币符号前置
    char p_sep_by_space;       // 正值货币符号与值之间的间隔
    char n_cs_precedes;        // 负值货币符号前置
    char n_sep_by_space;       // 负值货币符号与值之间的间隔
    char p_sign_posn;          // 正值符号位置
    char n_sign_posn;          // 负值符号位置
};

例

以下は、localeconv を使用して現在のロケール設定の数値および通貨の書式情報を取得し、出力するサンプルコードです:

例

#include <stdio.h>
#include <locale.h>

int main() {
    // ローカライズ情報をユーザー環境変数のデフォルト設定に設定します
    setlocale(LC_ALL, "");

    // 現在のロケール設定のローカライズ情報を取得します
    struct lconv *lc = localeconv();

    // 数値の書式情報を出力します
    printf("Decimal point character: %s\n", lc->decimal_point);
    printf("Thousands separator: %s\n", lc->thousands_sep);
    printf("Grouping: %s\n", lc->grouping);

    // 通貨の書式情報を出力します
    printf("International currency symbol: %s\n", lc->int_curr_symbol);
    printf("Local currency symbol: %s\n", lc->currency_symbol);
    printf("Monetary decimal point character: %s\n", lc->mon_decimal_point);
    printf("Monetary thousands separator: %s\n", lc->mon_thousands_sep);
    printf("Monetary grouping: %s\n", lc->mon_grouping);
    printf("Positive sign: %s\n", lc->positive_sign);
    printf("Negative sign: %s\n", lc->negative_sign);
    printf("International fractional digits: %d\n", lc->int_frac_digits);
    printf("Local fractional digits: %d\n", lc->frac_digits);
    printf("Positive currency symbol precedes: %d\n", lc->p_cs_precedes);
    printf("Positive currency symbol separated by space: %d\n", lc->p_sep_by_space);
    printf("Negative currency symbol precedes: %d\n", lc->n_cs_precedes);
    printf("Negative currency symbol separated by space: %d\n", lc->n_sep_by_space);
    printf("Positive sign position: %d\n", lc->p_sign_posn);
    printf("Negative sign position: %d\n", lc->n_sign_posn);

    return 0;
}

上記のプログラムをコンパイルして実行してみましょう。これにより、次の結果が得られます:

Decimal point character: .
Thousands separator: ,
Grouping: 
International currency symbol: CNY 
Local currency symbol: ¥
Monetary decimal point character: .
Monetary thousands separator: ,
Monetary grouping: 
Positive sign: 
Negative sign: -
International fractional digits: 2
Local fractional digits: 2
Positive currency symbol precedes: 1
Positive currency symbol separated by space: 0
Negative currency symbol precedes: 1
Negative currency symbol separated by space: 0
Positive sign position: 1
Negative sign position: 4

コード解析

  • 数値の書式情報:

    • decimal_point:小数点文字。例:「.」."。
    • thousands_sep:桁区切り文字。例:「,」,"。
    • grouping:数値のグループ化方式。
  • 通貨の書式情報:

    • int_curr_symbol:国際通貨記号。例:「USD」。
    • currency_symbol:ローカル通貨記号。例:「$」。
    • mon_decimal_point:通貨の小数点文字。
    • mon_thousands_sep:通貨の桁区切り文字。
    • mon_grouping:通貨のグループ化方式。
    • positive_sign:正符号。例:空文字。
    • negative_sign:負符号。例:「-」。
    • int_frac_digits:国際小数桁数。
    • frac_digits:ローカル小数桁数。
    • p_cs_precedes:正の金額での通貨記号の前置(1 は前置、0 は後置)。
    • p_sep_by_space:正の金額での通貨記号と値の間のスペース(1 はスペースあり、0 はスペースなし)。
    • n_cs_precedes:負の金額での通貨記号の前置(1 は前置、0 は後置)。
    • n_sep_by_space:負の金額での通貨記号と値の間のスペース(1 はスペースあり、0 はスペースなし)。
    • p_sign_posn:正符号の位置(1 は前置、2 は後置、3 は数値に隣接、4 は通貨記号に隣接)。
    • n_sign_posn:負符号の位置(1 は前置、2 は後置、3 は数値に隣接、4 は通貨記号に隣接)。

まとめ

localeconv関数は、プログラムが現在のロケール設定の数値および通貨の書式情報を取得できるようにします。これは、複数の言語や通貨の書式を扱う必要がある国際化プログラムの作成に非常に役立ちます。使用することでsetlocaleとlocaleconv関数を使用することで、プログラマはプログラムのローカライゼーションを実現し、さまざまなユーザーグループのニーズを満たすことができます。

C標準ライブラリ - <locale.h>

その他の拡張