WCSWIDTH(3C) Standard C Library Functions WCSWIDTH(3C)
wcswidth, wcswidth_l - determine number of columns for wide-character
string
#include <wchar.h>
int
wcswidth(const wchar_t *str, size_t len);
#include <wchar.h>
#include <xlocale.h>
int
wcswidth_l(const wchar_t *str, size_t len, locale_t loc);
The wcswidth() and wcswidth_l() functions count the total number of
columns that are required to display the contents of the wide-character
string str. For each wide-character in the string str, the equivalent
of wcwidth(3C) is called and the result summed to a running total which
is returned.
Up to len wide-characters from str will be evaluated; however, the
functions will stop iterating if they encounter the null wide-character
(L'\0').
The wide-characters in str must be valid characters in the current
locale or in the case of the wcswidth_l() function, the locale
specified by loc. The functions will fail if any of the wide-
characters in str are valid in the current locale, but considered non-
printable (as in iswprint(3C) would fail for the character) or the
wide-character does not represent a valid character in the locale.
Upon successful completion, the wcswidth() and wcswidth_l() functions
return the total number of columns that are required to display the
wide-character string. Otherwise, -1 is returned to indicate that an
invalid or non-printable wide-character was encountered.
Example 1 Using the wcswidth() function to count characters in a
string.
#include <wchar.h>
#include <stdio.h>
int
main(void)
{
wchar_t *str = L"Hello world";
int ret = wcswidth(str, wcslen(str));
(void) printf("wcswidth returned: %d\n", ret);
return (0);
}
When compiled and run, this program outputs:
$ gcc -Wall -Wextra example.c
$ ./a.out
wcswidth returned: 11
MT-LEVEL
The wcswidth() function is MT-Safe as long as the thread-specific or
global locale is not changed while it is running.
The wcswidth_l() function is MT-Safe as long as the locale loc is not
freed while the function is running.
Committed
iswprint(3C), newlocale(3C), setlocale(3C), uselocale(3C), wcwidth(3C)
illumos September 15, 2024 illumos
NAME
wcswidth, wcswidth_l - determine number of columns for wide-character
string
SYNOPSIS
#include <wchar.h>
int
wcswidth(const wchar_t *str, size_t len);
#include <wchar.h>
#include <xlocale.h>
int
wcswidth_l(const wchar_t *str, size_t len, locale_t loc);
DESCRIPTION
The wcswidth() and wcswidth_l() functions count the total number of
columns that are required to display the contents of the wide-character
string str. For each wide-character in the string str, the equivalent
of wcwidth(3C) is called and the result summed to a running total which
is returned.
Up to len wide-characters from str will be evaluated; however, the
functions will stop iterating if they encounter the null wide-character
(L'\0').
The wide-characters in str must be valid characters in the current
locale or in the case of the wcswidth_l() function, the locale
specified by loc. The functions will fail if any of the wide-
characters in str are valid in the current locale, but considered non-
printable (as in iswprint(3C) would fail for the character) or the
wide-character does not represent a valid character in the locale.
RETURN VALUES
Upon successful completion, the wcswidth() and wcswidth_l() functions
return the total number of columns that are required to display the
wide-character string. Otherwise, -1 is returned to indicate that an
invalid or non-printable wide-character was encountered.
EXAMPLES
Example 1 Using the wcswidth() function to count characters in a
string.
#include <wchar.h>
#include <stdio.h>
int
main(void)
{
wchar_t *str = L"Hello world";
int ret = wcswidth(str, wcslen(str));
(void) printf("wcswidth returned: %d\n", ret);
return (0);
}
When compiled and run, this program outputs:
$ gcc -Wall -Wextra example.c
$ ./a.out
wcswidth returned: 11
MT-LEVEL
The wcswidth() function is MT-Safe as long as the thread-specific or
global locale is not changed while it is running.
The wcswidth_l() function is MT-Safe as long as the locale loc is not
freed while the function is running.
INTERFACE STABILITY
Committed
SEE ALSO
iswprint(3C), newlocale(3C), setlocale(3C), uselocale(3C), wcwidth(3C)
illumos September 15, 2024 illumos