C++
 Computer >> コンピューター >  >> プログラミング >> C++

【C++】clocaleヘッダーファイルの使い方を解説


本記事では、C++における<clocale>ヘッダーファイルの使い方について詳しく解説します。

<clocale>ヘッダーファイルは、ローカライゼーション(地域化)ライブラリの一部であり、そのローカライゼーションライブラリはC++標準ライブラリの一部です。もともとは、C標準ライブラリに<locale.h>という名前で存在していました。

このヘッダーファイルに含まれる関数や宣言は、各国の日付形式や通貨記号を扱う処理など、ロケール(地域情報)に依存するタスクに使用されます。

<clocale>ヘッダーファイルには、setlocale()localeconv()の2つの関数が含まれています。

また、このヘッダーファイルで定義されており、これら2つの関数で使用されるマクロは以下のとおりです。

  • 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)

使用例

入力:setlocale(LC_ALL, "en_GB")
s = setlocale(LC_ALL, NULL)
出力:C

setlocale()は文字列へのポインタを返します。ロケールを正しく識別できた場合はそのロケールを返し、ここではCロケールを表す「C」が返されています。識別できなかった場合にはヌルポインタが返されます。

以下のプログラムで採用しているアプローチは次のとおりです

  • まず、main()関数内でsetlocale()関数を呼び出し、カテゴリをLC_MONETARY、ロケールをen_GBに設定します。
  • 次に、charポインタを持つlconv構造体(ここでは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はGreat Britain(グレートブリテン=イギリス)の略称です。さらに、lconv構造体を作成しそれを利用することで、イギリスの現在の通貨記号である£を表示しています。

  1. C++のlog()関数とは?自然対数を求める方法をわかりやすく解説

    C++の標準ライブラリには、数学的な計算を行うための便利な関数が多数用意されています。その中でもlog()関数は、数値の自然対数(ネイピア数 e を底とする対数)を求めるために使用される重要な関数です。log()関数の基本情報C/C++のライブラリ関数 double log(double x) は、引数 x の自然対数(底が e の対数)を返します。この関数を使用するには、ヘッダーファイル <cmath> をインクルードする必要があります。関数の宣言double log(double x)パラメータと戻り値パラメータ: x は浮動小数点型(double)の値です。自然対数を求めたい

  2. C++のswap()関数とは?2つの変数の値を入れ替える方法をサンプルコード付きで解説

    swap()関数とは C++のswap()関数は、2つの値を入れ替える(交換する)ための関数です。この関数を利用すれば、一時的な第三の変数を自分で用意することなく、2つの変数の値を簡単に入れ替えることができます。 swap()関数の構文 void swap(int variable_name1, int variable_name2); 変数に値を代入してswap()関数に渡した場合、関数内では値の入れ替えが行われますが、呼び出し元の実際の変数の値は変わりません。これは、引数が「値渡し」で渡されるためです。実際の変数の値を入れ替えたい場合は、後述する「参照渡し」を使用します。 例1:s