Skip to content

Commit da9f88f

Browse files
authored
Merge pull request #1542 from cpprefjp/clocale
<clocale>ライブラリの追加
2 parents 0b61755 + cef2a2c commit da9f88f

File tree

12 files changed

+110
-10
lines changed

12 files changed

+110
-10
lines changed

reference.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@
227227
| `<cinttypes>` | 固定精度整数のための書式指定マクロ | C++11 (C99) |
228228
| `<ciso646>` | `&&`に対する別名`and`のような、各種演算子に対するマクロを定義する。<br/> ただしC++ではこれらの別名はキーワードとして定義されるため、このヘッダでは何も定義されない。 | C++20で削除 |
229229
| [`<climits>`](/reference/climits.md) | 整数型の最小値、最大値を表すマクロ | |
230-
| `<clocale>` | ロケール | |
230+
| [`<clocale>`](/reference/clocale.md) | ロケール | |
231231
| [`<cmath>`](/reference/cmath.md) | 数学関数 | |
232232
| `<csetjmp>` | ジャンプ処理 | |
233233
| `<csignal>` | シグナル | |

reference/clocale.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# clocale
2+
* clocale[meta header]
3+
4+
`<clocale>`ヘッダでは、ローカライゼーション(地域化)に関するクラス・関数を定義する。
5+
6+
これらの機能は基本的には、`std`名前空間に属することを除いてC言語の標準ライブラリ`<locale.h>`ヘッダと同じである。
7+
8+
## マクロ
9+
10+
| 名前 | 説明 | 対応バージョン |
11+
| ------------- | ----------------------------------------- | ------- |
12+
| [`NULL`](/reference/cstddef/null.md) | ヌルポインタ定数に展開されるマクロ | |
13+
| `LC_ALL` | すべてのロケールカテゴリを一括指定するための定数 | |
14+
| `LC_COLLATE` | 文字列の照合(比較)規則に関するロケールカテゴリ | |
15+
| `LC_CTYPE` | 文字分類(大文字/小文字、数字、空白など)やマルチバイト文字の扱いに関するカテゴリ | |
16+
| `LC_MONETARY` | 通貨表記に関するロケールカテゴリ | |
17+
| `LC_NUMERIC` | 数値表記に関するロケールカテゴリ(小数点記号など) | |
18+
| `LC_TIME` | 日付および時刻表記に関するロケールカテゴリ | |
19+
20+
## 構造体
21+
| 名前 | 説明 | 対応バージョン |
22+
| ------------- | ----------------------------------------- | ------- |
23+
| `lconv` | 数値・通貨表示の書式設定をまとめた型 | |
24+
25+
## 関数
26+
| 名前 | 説明 | 対応バージョン |
27+
| ------------- | ----------------------------------------- | ------- |
28+
| [`setlocale`](/reference/clocale/setlocale.md) | ロケールを変更、または現在のロケールを取得する。 | |
29+
| `localeconv` | 現在のロケールに応じた数値・通貨表記情報を取得する。 | |
30+
31+
## 関連項目
32+
- [`locale`](locale.md)
33+
34+
## 参照
35+
[Synopses for the C library](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0175r1.html)

reference/clocale/setlocale.md

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
# setlocale
2+
* clocale[meta header]
3+
* std[meta namespace]
4+
* function[meta id-type]
5+
6+
```cpp
7+
namespace std {
8+
char* setlocale(int category, const char* locale);
9+
}
10+
```
11+
12+
## 概要
13+
指定したカテゴリのロケールを設定、または現在のロケールを取得する。
14+
15+
指定できる処理系定義のロケール文字列は[使用できるロケール文字列](/article/platform/locales.md)を参照のこと。
16+
17+
この関数の呼び出しは他スレッドにおける `setlocale()` または現在のロケールを使用する他の関数の呼び出しとデータ競合の可能性がある。
18+
19+
プログラム開始時の現在のロケールは `std::setlocale(LC_ALL, "C");` が呼び出されたのと同じ状態に初期化される。
20+
21+
## 引数
22+
- `category`:設定対象のカテゴリ。`LC_ALL`,`LC_CTYPE`などのマクロを使用。
23+
- `locale`:
24+
* `"C"`:標準のCロケール
25+
* `""`:環境依存のデフォルトロケール
26+
* `NULL`:現在のロケールを取得するだけ
27+
* 処置系定義の文字列
28+
29+
## 戻り値
30+
成功時は設定されたロケール名(文字列)、失敗時は`NULL`。
31+
32+
返された文字列をプログラムで変更してはならない。
33+
34+
`setlocale()` を呼び出したスレッドが終了した後、もしくは更に次の `setlocale()` の呼び出しの後に返された文字列を使った時の動作は未定義である。
35+
36+
## 例
37+
```cpp example
38+
#include <iostream>
39+
#include <clocale>
40+
41+
int main() {
42+
// 日本語ロケールに設定
43+
if (!std::setlocale(LC_ALL, "ja_JP.UTF-8")) {
44+
std::cerr << "Failed to set locale\n";
45+
return 1;
46+
}
47+
48+
// 現在の全カテゴリのロケールを取得
49+
std::cout << "Current locale: " << std::setlocale(LC_ALL, NULL) << "\n";
50+
51+
// 数値カテゴリだけ確認
52+
std::cout << "Numeric locale: " << std::setlocale(LC_NUMERIC, NULL) << "\n";
53+
}
54+
55+
```
56+
57+
### 出力
58+
```
59+
Current locale: ja_JP.UTF-8
60+
Numeric locale: ja_JP.UTF-8
61+
```
62+
63+
## 関連項目
64+
- [ ロケール文字列一覧 ](/article/platform/locales.md)
65+
- [ `std::locale` ](/reference/locale/locale.md)

reference/cstdlib/mb_cur_max.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ Locale: ja_JP.UTF-8, MB_CUR_MAX: 6
4444
4545
## 関連項目
4646
- [`MB_LEN_MAX`](/reference/climits/mb_len_max.md): 全ロケールでのマルチバイト文字の最大バイト数
47-
- `setlocale`: ロケールを変更する
47+
- [`setlocale`](/reference/clocale/setlocale.md): ロケールを変更する
4848
4949
## 参照
5050
- [mb_cur_max(3) - Linux man page](https://linux.die.net/man/3/mb_cur_max)

reference/string/stod.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ namespace std {
3838
- Clang (libc++) 3.3では、この関数の呼び出し前後で`errno`の値は変化しない。
3939
4040
### グローバルロケールの影響
41-
この関数は、`setlocale()`関数により挙動が変化する。
41+
この関数は、[`setlocale()`](/reference/clocale/setlocale.md)関数により挙動が変化する。
4242
4343
- `strtod()`関数での文字列先頭の空白を読み飛ばす処理に、`<cctype>`の`isspace()`関数が使用される。
4444
- 小数点記号は`LC_NUMERIC`で指定されたものが使用される。

reference/string/stof.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ namespace std {
3838
- Clang (libc++) 3.3では、この関数の呼び出し前後で`errno`の値は変化しない。
3939
4040
### グローバルロケールの影響
41-
この関数は、`setlocale()`関数により挙動が変化する。
41+
この関数は、[`setlocale()`](/reference/clocale/setlocale.md)関数により挙動が変化する。
4242
4343
- `strtof()`関数での文字列先頭の空白を読み飛ばす処理に、`<cctype>`の`isspace()`関数が使用される。
4444
- 小数点記号は`LC_NUMERIC`で指定されたものが使用される。

reference/string/stoi.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ namespace std {
4343
- Clang (libc++) 3.3では、この関数の呼び出し前後で`errno`の値は変化しない。
4444
4545
### グローバルロケールの影響
46-
この関数は、`setlocale()`関数により挙動が変化する。
46+
この関数は、[`setlocale()`](/reference/clocale/setlocale.md)関数により挙動が変化する。
4747
4848
`strtol()`関数での文字列先頭の空白を読み飛ばす処理に、`<cctype>`の`isspace()`関数が使用されるためである。
4949

reference/string/stol.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ namespace std {
4343
- Clang (libc++) 3.3では、この関数の呼び出し前後で`errno`の値は変化しない。
4444
4545
### グローバルロケールの影響
46-
この関数は、`setlocale()`関数により挙動が変化する。
46+
この関数は、[`setlocale()`](/reference/clocale/setlocale.md)関数により挙動が変化する。
4747
4848
`strtol()`関数での文字列先頭の空白を読み飛ばす処理に、`<cctype>`の`isspace()`関数が使用されるためである。
4949

reference/string/stold.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ namespace std {
3838
- Clang (libc++) 3.3では、この関数の呼び出し前後で`errno`の値は変化しない。
3939
4040
### グローバルロケールの影響
41-
この関数は、`setlocale()`関数により挙動が変化する。
41+
この関数は、[`setlocale()`](/reference/clocale/setlocale.md)関数により挙動が変化する。
4242
4343
- `strtold()`関数での文字列先頭の空白を読み飛ばす処理に、`<cctype>`の`isspace()`関数が使用される。
4444
- 小数点記号は`LC_NUMERIC`で指定されたものが使用される。

reference/string/stoll.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ namespace std {
4848
- Clang (libc++) 3.3では、この関数の呼び出し前後で`errno`の値は変化しない。
4949
5050
### グローバルロケールの影響
51-
この関数は、`setlocale()`関数により挙動が変化する。
51+
この関数は、[`setlocale()`](/reference/clocale/setlocale.md)関数により挙動が変化する。
5252
5353
`strtoll()`関数での文字列先頭の空白を読み飛ばす処理に、`<cctype>`の`isspace()`関数が使用されるためである。
5454

0 commit comments

Comments
 (0)