We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent bc2182d commit 19e6007Copy full SHA for 19e6007
1 file changed
reference/cstdlib/mblen.md
@@ -18,6 +18,10 @@ namespace std {
18
19
`n`は解析に使用する最大バイト数を指定する。
20
21
+この関数は `std::mbstate_t` に等価な静的記憶域の内部状態を保持し、前回の `mblen` 関数呼び出しの続きとして処理を行う。
22
+従って、この関数はスレッドセーフではない。
23
+スレッドセーフに処理する場合は、`std::mbstate_t` を受け取る [`std::mbrlen`](../cwchar/mbrlen.md.nolink) (`<cwchar>`) を使い、呼び出し元でデコード状態の記録場所 `std::mbstate_t` を用意する。
24
+
25
## 戻り値
26
- 正常に動作する場合、文字の占めるバイト数を返す。
27
- `str`が`nullptr`の時、内部状態を初期化し`0`を返す。
@@ -77,8 +81,15 @@ int main() {
77
81
}
78
82
```
79
83
84
+注意: この例は飽くまで `std::mblen` を用いて文字数を数える関数の例であるが、実用上は `std::mbrlen` を用いた実装にするのが安全である。
85
+上の関数 `count_chars_mblen` はスレッドーセーフでない他、呼び出し元でも `std::mblen` を使っている場合にその振る舞いを破壊する可能性がある。
86
80
87
#### 出力例
88
89
文字列: こんにちは世界
90
文字数: 7
91
92
93
+## 関連項目
94
95
+- [`mbrlen`](../cwchar/mbrlen.md.nolink): `std::mbstate_t` を受け取るスレッドセーフなバージョン
0 commit comments