Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C/C++のmbrlen()関数とは?マルチバイト文字の長さを取得する方法を解説

mbrlen()関数は、マルチバイト文字の長さ(バイト数)を取得するために使用される標準ライブラリ関数です。引数として渡されたポインタが指すマルチバイト文字のサイズを返します。

mbrlen()関数の構文

C言語におけるmbrlen()関数の構文は以下の通りです。

size_t mbrlen(const char* pointer, size_t size, mbstate_t* state);

パラメータの説明

  • pointer − マルチバイト文字の先頭バイトへのポインタ
  • size − チェックする最大バイト数
  • statembstate_t型オブジェクトへのポインタ(変換状態を保持する)

この関数は、正常に解析できた場合はそのマルチバイト文字のバイト数を、不正なシーケンスの場合は-1を、不完全なシーケンスの場合は-2を返します。また、ヌル文字に到達した場合は0を返します。

mbrlen()関数の使用例

以下は、C言語でmbrlen()関数を使用したサンプルプログラムです。

#include <stdio.h>
#include <stdlib.h>
#include <wchar.h>

int main(void) {
    char a[] = "s";
    mbstate_t s;
    int len;
    
    len = mbrlen(a, 5, &s);
    printf("Length of multibyte character : %d \n", len);
    return 0;
}

実行結果

Length of multibyte character : 1

プログラムの解説

上記のプログラムでは、mbrlen()関数を使ってマルチバイト文字の長さをバイト単位で計算しています。

char a[] = "s";
mbstate_t s;
int len;
len = mbrlen(a, 5, &s);

ここでは、文字列aに格納された文字「s」の長さを求めています。ASCII文字である「s」は1バイトで表現されるため、実行結果として1が出力されます。なお、日本語などのマルチバイト文字(UTF-8では3〜4バイト)を渡した場合には、その文字が占めるバイト数が返されます。

mbrlen()関数を使用する際は、ヘッダーファイル<wchar.h>をインクルードする必要がある点に注意してください。

  1. C/C++のmbsrtowcs()関数とは?構文・パラメータ・戻り値と実例を解説

    本記事では、C++ STLに含まれるstd::mbsrtowcs()関数の仕組み、構文、および具体的な使用例について詳しく解説します。 std::mbsrtowcs()とは? std::mbsrtowcs()は、C++ STLに組み込まれている関数で、<cwchar>ヘッダーファイル内で定義されています。関数名のmbsrtowcs()は「multibyte string to wide character string(マルチバイト文字列からワイド文字列への変換)」を意味し、再開可能な変換状態を維持しながら、NULL終端されたマルチバイト文字列をワイド文字列表現へと変換します。この

  2. C/C++のsystem()関数とは?使い方と実行例を徹底解説

    この記事では、C/C++におけるsystem()関数の基本的な使い方と動作について、具体例を交えながら詳しく解説します。 system()関数は、C/C++標準ライブラリに含まれる関数の一つです。オペレーティングシステムのコマンドプロセッサ(コマンドプロンプト)やターミナルで実行可能なコマンドをプログラムから渡して実行でき、コマンドの処理が完了すると制御をプログラムに戻します。 この関数を使用するには、ヘッダーファイル<stdlib.h>(C++の場合は<cstdlib>)をインクルードする必要があります。 構文 system()関数の構文は以下の通りです。 int