wcswidth() — ワイド文字ストリングの表示幅の判別

形式

#include <wchar.h>
int wcswidth (const wchar_t *wcs, size_t n);

言語レベル

XPG4

スレッド・セーフ

はい

ロケール依存

コンパイル・コマンドで LOCALETYPE(*LOCALE) が指定される場合、この関数の振る舞いは、現行ロケールの LC_CTYPE カテゴリーの影響を受ける可能性があります。 また、コンパイル・コマンドで LOCALETYPE(*LOCALEUCS2) または LOCALETYPE(*LOCALEUTF) が指定される場合、この関数の振る舞いは、 現行ロケールの LC_UNI_CTYPE カテゴリーの影響も受ける可能性があります。 この関数は、コンパイル・コマンドに対して LOCALETYPE(*CLD) が指定されている場合には使用できません。 詳しくは、 CCSID とロケールについてを参照してください。

ワイド文字関数

詳しくは、 ワイド文字 を参照してください。

説明

wcswidth() 関数は、ディスプレイ装置上で wcs が指すワイド・ストリング内の n ワイド文字 ( n 個のワイド文字がなくなる前にヌル・ワイド文字が検出された場合は、 n 個より少ないワイド文字) のグラフィック表現が占める印刷位置の数を判別します。 その数は、装置上のその位置とは無関係です。

errno の値は、 EINVAL (非出力ワイド文字) に設定される可能性があります。

戻り値

wcswidth() 関数は、以下のいずれかを戻します。
  • wcs がヌル・ワイド文字を指す場合は 0。
  • wcs が指すワイド・ストリングによって占有された出力位置数。
  • wcs が指すワイド・ストリングのワイド文字が出力ワイド文字でない場合は -1。

#include <stdio.h>
#include <wchar.h>
 
int main(void)
{
   wchar_t *wcs = L"ABC";
 
   printf("wcs has a width of: %d\n", wcswidth(wcs,3));
}
 
/************The output is as follows**************/
/*                                                */
/*                wcs has a width of: 3           */
/*                                                */
/**************************************************/

関連情報