標準/拡張機能 | C/C++ | 依存項目 |
---|---|---|
ISO C |
両方 |
#include <stdlib.h>
int mbtowc(wchar_t * __restrict__pwc, const char* __restrict__string, size_t n);
マルチバイト文字をワイド文字に変換し、マルチバイト文字のバイト数を戻します。この関数はまず、string が指す マルチバイト文字の長さを判別します。次にマルチバイト文字を対応するワイド文字に変換 し、pwc が NULL ポインターでない場合には、pwc が指す場所にワイド文字を配置します。最大で n バイトが検査されます。
このワイド文字関数の動作は、現行ロケールの LC_CTYPE カテゴリーの影響を受けます。 カテゴリーを変更すると、未定義の結果が発生する可能性があります。
現行ロケールが EBCDIC DBCS 文字をサポートする場合、シフト状態は適宜更新されます。戻される長さは 4 文字長 (シフトアウト文字、2 バイト・コード、およびシフトイン文字用) までです。
関数がその初期状態になったあと、その関数 により string が指すマルチバイト文字が そのとおりに解釈されます。シフトに依存したエンコード文字の処理中に、あるストリングの 処理を停止してから一時的に別のストリングの処理に移り、また最初のストリングに戻ることはできません。これは、その 状態が、最初のストリングで処理を停止したところではなく、2 番目の ストリング用に有効なものとなるからです。
/* This example uses mbtowc() to convert a multibyte character into a wide
character.
*/
#include <stdio.h>
#include <stdlib.h>
int temp;
char string [6];
wchar_t arr[6];
int main(void)
{ /* Set string to point to a multibyte character. */
⋮
temp = mbtowc(arr, string, MB_CUR_MAX);
printf("wide-character string: %ls",arr);
}