マルチバイト文字列のstrlen()
昨日言ってたマルチバイト文字列の長さをはかる方法、mblen()を使えば簡単に出来た。っていうかmbなんたら系の関数っていつのまにC標準に?(ぉ
int mbstrlen(const char * src) { unsigned length = 0; /* 返り値となるlength */ const char * psrc = src; /* 渡された文字列をなめるためのポインタ */ int byte_size; /* mblen()の返り値を受け取る変数 */ /* 空データは勘弁。 */ assert(src != NULL); do { /* mblen()で現在の文字のバイト数をはかる */ byte_size = mblen(psrc, MB_CUR_MAX); switch(byte_size) { /* 不正なマルチバイト文字だった場合、-1を返す */ case -1: return -1; /* それ以外は次の文字を見に行く */ default: psrc += byte_size; } /* 文字数をカウント */ ++length; /* byte_sizeが0(つまりmblen()の返り値が0) == NULL文字 */ }while(byte_size != 0); /* 終端のNULL文字の分を除外した分を返す */ return length - 1; }
これってWindowsでは_mbslen()で提供されてるけど、なぜC標準では提供されてないのかしら?