curs_get_wstr(3x) curs_get_wstr(3x)
get_wstr, getn_wstr, wget_wstr, wgetn_wstr, mvget_wstr,
mvgetn_wstr, mvwget_wstr, mvwgetn_wstr
- curses 端末キーボードからワイド文字の配列を取得する
#include <curses.h>
int get_wstr(wint_t *wstr);
int getn_wstr(wint_t *wstr, int n);
int wget_wstr(WINDOW *win, wint_t *wstr);
int wgetn_wstr(WINDOW *win, wint_t *wstr, int n);
int mvget_wstr(int y, int x, wint_t *wstr);
int mvgetn_wstr(int y, int x, wint_t *wstr, int n);
int mvwget_wstr(WINDOW *win, int y, int x, wint_t *wstr);
int mvwgetn_wstr(WINDOW *win, int y, int x, wint_t *wstr, int n);
get_wstr の効果は、改行、その他の行末、もしくはファイル末尾の
状態が処理されるまで、get_wch を連続して呼び出すのと同じです。
ファイル末尾の状態は <wchar.h> で定義された WEOF で表されます。
改行と行末の状態は wchar_t 型の \n で表されます。
すべての場合に、文字列の最後は wchar_t 型のヌル文字で
終端されます。
このルーチンは結果を wstr が指す領域に格納します。
消去文字 (erase) と行消去文字 (kill) は解釈されます。
ウインドウで keypad モードが有効な場合、KEY_LEFT と
KEY_BACKSPACE はともに行消去文字と同じとみなされます。
入力された文字は、echo が現在有効な場合にのみ
エコーされます。
その場合、バックスペースは前の文字の削除としてエコーされます
(一般的に左への動き) 。
wget_wstr の効果は、wget_wch を連続して呼び出すのと同じです。
mvget_wstr の効果は、move を呼び出した後、get_wch を連続して
呼び出すのと同じです。
mvwget_wstr の効果は、wmove を呼び出した後、wget_wch を
連続して呼び出すのと同じです。
getn_wstr, mvgetn_wstr, mvwgetn_wstr, wgetn_wstr 関数は
それぞれ get_wstr, mvget_wstr, mvwget_wstr, wget_wstr 関数と
同じですが、*n_* 関数は最大 n 文字しか読まず、入力バッファの
オーバーフローを防ぎます。
get_wstr, mvget_wstr, mvwget_wstr, wget_wstr を wstr が指す
配列がオーバーフローするような行の読み込みに使うと、未定義の
結果を引き起こします。
それぞれ getn_wstr, mvgetn_wstr, mvwgetn_wstr, wgetn_wstr の
使用を推奨します。
これらの関数は KEY_ で始まる定義済みの値を返せません。
KEY_ 値と有効な wchar_t 値を区別する方法がないからです。
wgetn_wstr 以外のすべてのルーチンは、マクロかもしれません。
これらすべての関数は、正常終了のとき OK を、その他のとき
ERR を返します。
ウインドウ引数を使う関数は、ウインドウ引数がヌルのとき
エラーを返します。
wgetn_wstr
これに伴う wget_wch 呼び出しが失敗したときに
エラーを返します。
mv で始まる関数は、最初に wmove を使用してカーソルを移動し、
位置がウィンドウの外だった場合、またはウィンドウポインタが
ヌルの場合にエラーを返します。
これらの関数は The Single Unix Specification, Version 2 に
記載されています。
エラーの条件は定義されていません。
この実装では、ウインドウ・ポインタがヌルのとき、または
低レベルの wget_wch 呼び出しが ERR を返したときに ERR を
返します。
後者の場合、他のデータなく ERR が返ったときは、
ファイル末尾の状態として扱われ、戻ってきた配列は WEOF と
それに続く wchar_t 型のヌル文字を含んでいます。
X/Open curses はこれらの関数が wchar_t 型の配列を渡すように
記述していますが、すべての供給元の実装はこの配列に
wint_t 型を使っています。
関数: curses(3x), curs_get_wch(3x), curs_getstr(3x).
訳注: echo, keypad は curs_inopts(3x)、
KEY_ 定数は curs_getch(3x) を参照。
curs_get_wstr(3x)