std:: wcstombs
|
定義先ヘッダ
<cstdlib>
|
||
|
std::
size_t
wcstombs
(
char
*
dst,
const
wchar_t
*
src,
std::
size_t
len
)
;
|
||
src が指す最初の要素から始まるワイド文字のシーケンスを、初期シフト状態で始まるナローマルチバイト表現に変換します。変換された文字は、 dst が指すchar配列の連続する要素に格納されます。宛先配列には最大で len バイトまで書き込まれます。
各文字は、 std::wctomb を呼び出したかのように変換されます。ただし、wctombの変換状態は影響を受けません。以下の場合に変換は停止します:
- ナル文字が変換され格納されました。
- 現在のCロケールで有効な文字に対応しない wchar_t が見つかりました。
- 次に格納されるマルチバイト文字が len を超えることになります。
目次 |
注記
ほとんどの実装では、この関数は文字列を処理する際に std::mbstate_t 型のグローバル静的オブジェクトを更新するため、2つのスレッドから同時に呼び出すことはできません。 そのような場合は、 std:: wcsrtombs を使用すべきです。
POSIXは共通の拡張機能を規定しています: dst がヌルポインタの場合、この関数は変換された場合に dst に書き込まれるバイト数を返します。同様の動作は std:: wcsrtombs でも標準です。
パラメータ
| dst | - | マルチバイト文字が格納されるナロウ文字配列へのポインタ |
| src | - | 変換対象のnull終端ワイド文字列の先頭要素へのポインタ |
| len | - | dstが指す配列で利用可能なバイト数 |
戻り値
成功時は、 dst が指す先頭要素の文字配列に書き込まれたバイト数(シフトシーケンスを含むが、終端の ' \0 ' を除く)を返します。
変換エラーが発生した場合(無効なワイド文字が検出された場合)、 static_cast < std:: size_t > ( - 1 ) を返します。
例
#include <clocale> #include <cstdlib> #include <iostream> int main() { std::setlocale(LC_ALL, "en_US.utf8"); // UTF-8 narrow multibyte encoding const wchar_t* wstr = L"z\u00df\u6c34\U0001d10b"; // or L"zß水𝄋" char mbstr[11]; std::wcstombs(mbstr, wstr, 11); std::cout << "multibyte string: " << mbstr << '\n'; }
出力:
multibyte string: zß水𝄋
関連項目
|
ワイド文字列をナローマルチバイト文字列に変換する(状態を指定)
(関数) |
|
|
ナローマルチバイト文字列をワイド文字列に変換する
(関数) |
|
|
[virtual]
|
InternT
から
ExternT
への文字列変換を実行する(ファイル書き込み時など)
(
std::codecvt<InternT,ExternT,StateT>
の仮想保護メンバ関数)
|
|
Cドキュメント
for
wcstombs
|
|