std::locale::locale
提供: cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| ヘッダ <locale> で定義
|
||
| (1) | ||
locale() throw(); |
(C++11未満) | |
locale() noexcept; |
(C++11以上) | |
| (2) | ||
locale( const locale& other ) throw(); |
(C++11未満) | |
locale( const locale& other ) noexcept; |
(C++11以上) | |
explicit locale( const char* std_name ); |
(3) | |
explicit locale( const std::string& std_name ); |
(4) | (C++11以上) |
locale( const locale& other, const char* std_name, category cat ); |
(5) | |
locale( const locale& other, const std::string& std_name, category cat ); |
(6) | (C++11以上) |
template< class Facet > locale( const locale& other, Facet* f ); |
(7) | |
locale( const locale& other, const locale& one, category cat ); |
(8) | |
新しいロケールオブジェクトを構築します。
1) デフォルトコンストラクタ。 グローバルな C++ のロケール (最も最近に
std::locale::global への引数として使用されたロケール、または std::locale::global が行われていない場合は std::locale::classic のコピー) のコピーを構築します。2) コピーコンストラクタ。
other のコピーを構築します。3-4) 指定された
std_name ("C"、 "POSIX"、 "en_US.UTF-8"、 "English_US.1251" など) を持つシステムロケールのコピーを構築します (そのようなロケールがオペレーティングシステムによってサポートされていれば)。 この方法で構築されたロケールは名前を持ちます。5-6)
other のコピーを構築します。 ただし、 cat 引数によって識別されるすべてのファセットについては、 std_name によって識別されるシステムロケールからコピーされます。 この方法で構築されたロケールは other が名前を持つ場合に限り名前を持ちます。7)
other のコピーを構築します。 ただし Facet 型 (一般的には引数の型から推定されます) のファセットについては引数 facet から導入されます。 facet が NULL の場合、構築されたロケールは other の完全なコピーです。 この方法で構築されたロケールは名前を持ちません。8)
other のコピーを構築します。 ただし cat 引数によって識別されるすべてのファセットは one からコピーされます。 other と one がどちらも名前を持つ場合、結果のロケールも名前を持ちます。引数
| other | - | コピーする別のロケール |
| std_name | - | 使用するシステムロケールの名前 |
| f | - | other とマージするファセットへのポインタ
|
| cat | - | other とマージするファセットを識別するために使用されるロケールカテゴリ
|
| one | - | ファセットの取得元の別のロケール |
例外
7,8) (なし)
ノート
オーバーロード 7 は一般的には new 式から直接取得した f を第2引数に指定して呼ばれます。 ロケールが自分のデストラクタから対応する delete を呼ぶ責任を持ちます。
例
Run this code
#include <iostream>
#include <locale>
#include <codecvt>
int main()
{
std::locale l1; // l1 は古典的な "C" ロケールのコピーです。
std::locale l2("en_US.UTF-8"); // l2 は unicode ロケールです。
std::locale l3(l1, l2, std::locale::ctype); // l3 は ctype 以外は "C" です (ctype は unicode です)。
std::locale l4(l1, new std::codecvt_utf8<wchar_t>); // l4 は codecvt 以外は "C" です。
std::cout << "Locale names:\nl1: " << l1.name() << "\nl2: " << l2.name()
<< "\nl3: " << l3.name() << "\nl4: " << l4.name() << '\n';
}
出力:
Locale names:
l1: C
l2: en_US.UTF-8
l3: LC_CTYPE=en_US.UTF-8;LC_NUMERIC=C;LC_TIME=C;LC_COLLATE=C;LC_MONETARY=C;LC_MESSAGES=C;LC_PAPER=C;LC_NAME=C;LC_ADDRESS=C;LC_TELEPHONE=C;LC_MEASUREMENT=C;LC_IDENTIFICATION=C
l4: *
関連項目
| ロケールおよび参照カウントがゼロになったファセットを破棄します (パブリックメンバ関数) |