---
name: "in_wchstr"
section: "3ncurses"
platform: "linux"
package: "ncurses-doc"
version: "6.5+20250216-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/in_wchstr/3ncurses"
---

# in\_wchstr(3ncurses)

get a curses complex character string from a window

## NAME

**in\_wchstr**, **in\_wchnstr**, **win\_wchstr**, **win\_wchnstr**, **mvin\_wchstr**, **mvin\_wchnstr**, **mvwin\_wchstr**, **mvwin\_wchnstr** - get a *curses* complex character string from a window

## SYNOPSIS

```
#include <curses.h>
```

**int in\_wchstr(cchar\_t \****wchstr***);** **int win\_wchstr(WINDOW \****win***, cchar\_t \****wchstr***);** **int mvin\_wchstr(int** *y***, int** *x***, cchar\_t \****wchstr***);** **int mvwin\_wchstr(WINDOW \****win***, int** *y***, int** *x***, cchar\_t \****wchstr***);**

**int in\_wchnstr(cchar\_t \****wchstr***, int** *n***);** **int win\_wchnstr(WINDOW \****win***, cchar\_t \****wchstr***, int** *n***);** **int mvin\_wchnstr(int** *y***, int** *x***, cchar\_t \****wchstr***, int** *n***);** **int mvwin\_wchnstr(WINDOW \****win***, int** *y***, int** *x***, cchar\_t \****wchstr***, int** *n***);**

## DESCRIPTION

**These functions return an array of complex characters in** *wchstr***,** **starting at the current cursor position in the named window.** **Attributes (rendition) are stored with the characters.**

**The four functions with** *n* **as the last argument return** **a leading substring at most** *n* **characters long** **(exclusive of the trailing zeroed cchar\_t**. Transfer stops at the end of the current line, or when *n* characters have been stored at the location referenced by *wchstr*.

Constants defined in **\<curses.h\>** can be used with the **&** (logical “and”) operator to extract the character or the attribute alone from any position in the *wchstr* \[see **getcchar**(3NCURSES)\].

## RETURN VALUE

Upon successful completion, these functions return **OK**. Otherwise, they return **ERR**.

*ncurses* returns **ERR**

- •

  if the *win* parameter is null or

- •

  if the *wchstr* parameter is null.

Functions prefixed with “mv” first perform cursor movement and fail if the position (*y*, *x*) is outside the window boundaries.

## NOTES

All of these functions except **win\_wchnstr** may be implemented as macros.

Reading a line that overflows the array pointed to by *wchstr* with **in\_wchstr**, **mvin\_wchstr**, **mvwin\_wchstr** or **win\_wchstr** causes undefined results. Therefore, the use of **in\_wchnstr**, **mvin\_wchnstr**, **mvwin\_wchnstr**, or **win\_wchnstr** is recommended.

## PORTABILITY

X/Open Curses Issue 4 describes these functions. It specifies no error conditions for them.

## HISTORY

X/Open Curses Issue 4 (1995) initially specified these functions. The System V Interface Definition Version 4 of the same year specified a function named *winwchstr* (and the usual variants). This was a later addition to SVr4.*x*, not appearing in the first SVr4 (1989). It differed from X/Open's later *win\_wchstr* in that it took an argument of type pointer-to-*chtype* instead of pointer-to*cchar\_t*.

## SEE ALSO

**inchstr**(3NCURSES) describes comparable functions of the *ncurses* library in its non-wide-character configuration.

**ncurses**(3NCURSES), **inwstr**(3NCURSES), **in\_wch**(3NCURSES)
