wcwidth() - ワイド文字の表示幅の判別

標準

標準/拡張機能 C/C++ 依存項目

XPG4
XPG4.2
Single UNIX Specification、バージョン 3

両方  

形式

XPG4:
#include <wchar.h>

int wcwidth(const wint_t wc);
XPG4:
#define _XOPEN_SOURCE
#include <wchar.h>

int wcwidth(const wchar_t wc);

機能説明

wc のグラフィック表示がディスプレイで占有する印刷位置数を 判別します。各印刷ワイド文字は、ディスプレイ上にそれ独自の印刷位置数を 占有します。その数は、装置上のその位置とは無関係です。

XPG4 の特殊な動作: プログラム・ソース・ファイル内の wchar ヘッダーをインクルードするステートメントより前に、XPG4 の動作を指定してフィーチャー・テスト・マクロを定義した場合、コンパイラーは、ユーザーのプログラムが wcwidth() 関数の XPG4 版を使用するものと想定します。 XPG4 と他のフィーチャー・テスト・マクロのリストについては、表 1 を参照してください。

wcwidth() 関数の XPG4 版のプロトタイプは、以下のとおりです。
int wcwidth(const wchar_t wc);

XPG4 の wcwidth() と C/370™、つまり XPG4 以外の wcwidth() 関数との間の違いは、パラメーター wc が、wint_t 型ではなく wchar_t 型であることです。

戻り値

正常に実行された場合、wcwidth() は、wc が占有した印刷位置数を戻します。

wc が NULL または非スペース・ワイド文字である場合、wcwidth() は 0 を戻します。

wc が印刷ワイド文字でない場合、wcwidth() は 1 を戻します。

wcwidth() の動作は、LC_CTYPE カテゴリーの影響を受けます。
注 :
  1. z/OS® XL C/C++ アプリケーションのもとでは、戻された幅は NULL 文字 または非スペース文字の場合にはゼロ、1 バイト文字の場合には 1、2 バイト文字の場合には 2 になります。
  2. 非スペース文字は、LC_CTYPE カテゴリーの _zlc (ゼロ長 文字クラス) という名前の charclass に属する文字です。

CELEBW31
⁄* CELEBW31 *⁄                                   
#include <stdio.h>                                                              
#include <wchar.h>                                                              
                                                                                
int main(void)                                                                  
{                                                                               
   wint_t wc = L'A';                                                            
                                                                                
   printf("wc has a width of: %d¥n", wcwidth(wc));                              
}                                                                               
出力:
wc has a width of: 1

関連情報