C言語編 標準ライブラリのリファレンス mbstowcs

先頭へ戻る

mbstowcs関数

概要 マルチバイト文字列をワイド文字列に変換する。
ヘッダ stdlib.h
形式 size_t mbstowcs(wchar_t* ws, const char* s, size_t n);
引数 ws 変換結果を受け取る配列を指すポインタ。
s 変換対象のマルチバイト文字列。
n 変換する最大文字数。変換後のワイド文字列の文字数で指定する。末尾のヌル文字の分は含まない。
戻り値 変換後のワイド文字列の文字数。末尾のヌル文字はカウントしない。
失敗した場合には、-1 を size_t型にキャストした値が返される。
詳細 引数s が指すマルチバイト文字列の先頭から、対応するワイド文字へ変換し、配列 ws へ格納する。格納する文字数は最大でも、引数n の値分だけである。また、ヌル文字が現れた時点でも終了し、ヌル文字より後ろは処理の対象にならない。
ワイド文字へ変換できないマルチバイト文字が含まれていた場合は失敗する。
この関数は、ロケールの LC_CTYPE カテゴリの影響を受ける。
注意
使用例
#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>
#include <locale.h>

#define SIZE_OF_ARRAY(array) (sizeof(array)/sizeof(array[0]))

int main(void)
{
    const char mbs[] = "あいうえお";
    wchar_t ws[16];
    size_t len;

    /* LC_CTYPE をネイティブロケールに変更 */
    if( setlocale( LC_CTYPE, "" ) == NULL ){
        fputs( "ロケールの設定に失敗しました。\n", stderr );
        return EXIT_FAILURE;
    }

    len = mbstowcs( ws, mbs, SIZE_OF_ARRAY(ws) );
    if( len == (size_t)-1 ){
        fputs( "error\n", stderr );
        exit( EXIT_FAILURE );
    }

    wprintf( L"%ls\n", ws );

    return 0;
}

実行結果:

あいうえお
関連 逆方向の変換であるワイド文字列からマルチバイト文字列への変換は、wcstombs関数で行える。
マルチバイト文字からワイド文字への変換は、mbtowc関数で行える。
解説章 第47章


参考リンク



更新履歴

'2018/4/11 全体的に文章を見直し修正。

'2018/1/22 新規作成。



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ


はてなブックマーク Pocket に保存 Twitter でツイート Twitter をフォロー
Facebook でシェア Google+ で共有 LINE で送る rss1.0 取得ボタン RSS
管理者情報 プライバシーポリシー