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

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

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


mbstowcs関数

概要

マルチバイト文字列をワイド文字列に変換する。

ヘッダ

stdlib.h

形式

size_t mbstowcs(wchar_t* restrict ws, const char* restrict 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[] = "あいうえお";

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

    wchar_t ws[16];
    size_t 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);
}

実行結果:

あいうえお

関連

逆方向の変換であるワイド文字列からマルチバイト文字列への変換は、wcstombs関数で行える。
マルチバイト文字からワイド文字への変換は、mbtowc関数で行える。

解説章

第47章


参考リンク


更新履歴

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

’2018/1/22 新規作成。



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

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

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

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
X で ポストフォロー LINE で送る noteで書く
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー
先頭へ戻る