std::mbstowcs
From cppreference.com
| ヘッダ <cstdlib> で定義 |
||
| std::size_t mbstowcs( wchar_t* dst, const char* src, std::size_t len ); |
||
srcが指す配列のマルチバイト文字文字列を、ワイド文字列表現に変換します。変換された文字は、dstが指す配列の連続する要素に格納されます。dst配列には、len文字を超えるワイド文字は書き込まれません。
std::mbtowcによる変換と同様に、各文字は変換されますが、mbtowcの変換状態は影響を受けません。変換は、以下のいずれかの条件で停止します。
- マルチバイトヌル文字が変換され、格納された。
- 無効な(現在のCロケールにおいて)マルチバイト文字に遭遇した。
- 格納される次のワイド文字がlenを超える場合。
目次 |
[編集] 注釈
ほとんどの実装では、この関数は文字列を処理する際にstd::mbstate_t型のグローバル静的オブジェクトを更新するため、2つのスレッドから同時に呼び出すことはできません。そのような場合は、std::mbsrtowcsを使用してください。
POSIXは一般的な拡張を規定しています。もしdstがヌルポインタである場合、この関数は、変換された場合にdstに書き込まれるワイド文字数を返します。同様の動作は、std::mbsrtowcsについても標準です。
[編集] パラメータ
| dst | - | ワイド文字列が格納されるワイド文字配列へのポインタ |
| src | - | 変換するヌル終端マルチバイト文字列の最初の要素へのポインタ |
| len | - | dstが指す配列で利用可能なワイド文字数 |
[編集] 戻り値
成功した場合、変換されたワイド文字数(終端のL'\0'を除く)を返します。
変換エラー(無効なマルチバイト文字に遭遇した場合)が発生した場合、static_cast<std::size_t> (-1)を返します。
[編集] 例
このコードを実行
#include <clocale> #include <cstdlib> #include <iostream> int main() { std::setlocale(LC_ALL, "en_US.utf8"); std::wcout.imbue(std::locale("en_US.utf8")); const char* mbstr = "z\u00df\u6c34\U0001f34c"; // or u8"zß水🍌" // or "\x7a\xc3\x9f\xe6\xb0\xb4\xf0\x9f\x8d\x8c"; wchar_t wstr[5]; std::mbstowcs(wstr, mbstr, 5); std::wcout << "wide string: " << wstr << '\n'; }
出力
wide string: zß水🍌
[編集] 関連項目
| 与えられた状態で、ナローマルチバイト文字列をワイド文字列に変換する (関数) | |
| ワイド文字列をナローマルチバイト文字列に変換する (関数) | |
| [virtual] |
ファイルからの読み込み時など、ExternT から InternT への文字列を変換します。( std::codecvt<InternT,ExternT,StateT> の virtual protected メンバ関数) |
| Cドキュメント (mbstowcs)
| |