mbtowc() - マルチバイト文字のワイド文字への変換

標準

標準/拡張機能 C/C++ 依存項目

ISO C
XPG4
XPG4.2
C99
Single UNIX Specification、バージョン 3

両方  

形式

#include <stdlib.h>

int mbtowc(wchar_t * __restrict__pwc, const char* __restrict__string, size_t n);

機能説明

マルチバイト文字をワイド文字に変換し、マルチバイト文字のバイト数を戻します。この関数はまず、string が指す マルチバイト文字の長さを判別します。次にマルチバイト文字を対応するワイド文字に変換 し、pwc が NULL ポインターでない場合には、pwc が指す場所にワイド文字を配置します。最大で n バイトが検査されます。

このワイド文字関数の動作は、現行ロケールの LC_CTYPE カテゴリーの影響を受けます。 カテゴリーを変更すると、未定義の結果が発生する可能性があります。

戻り値

string が NULL の場合、mbtowc() は以下を戻します。
  • 現行ロケール (LC_CTYPE) のマルチバイトのエンコードが シフトに依存している場合は、ゼロ以外。
  • それ以外の場合は、0。
  • 現行のシフト状態は初期状態に設定されます。
それ以外の string が NULL でない場合、mbtowc() は以下を戻します。
  • n または数バイトが有効なマルチバイト文字を 形成している場合には、変換されたマルチバイト文字を 構成するバイト数。
  • string が NULL 文字を指す場合には、0。
  • string が有効なマルチバイト文字を指さず、さらに次の n バイトが有効なマルチバイト文字を 形成しない場合には、-1。

現行ロケールが 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);
}

関連情報