##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::c32rtomb

From cppreference.com
< cpp‎ | string‎ | multibyte

Defined in header `<cuchar>` |  |
std::size_t c32rtomb( char* s, char32_t c32, std::mbstate_t* ps ); |  | (since C++11)

Converts a 32-bit wide character to its narrow multibyte representation.

If `s` is not a null pointer, the function determines the number of bytes necessary to store the multibyte character representation of `c32` (including any shift sequences), and stores the multibyte character representation in the character array whose first element is pointed to by `s`. At most MB_CUR_MAX bytes can be written by this function.

If `s` is a null pointer, the call is equivalent to std::c32rtomb(buf, U'\0', ps) for some internal buffer `buf`.

If c32 is the null wide character U'\0', a null byte is stored, preceded by any shift sequence necessary to restore the initial shift state and the conversion state parameter *ps is updated to represent the initial shift state.

If the macro __STDC_UTF_32__ is defined, the 32-bit encoding used by this function is UTF-32, otherwise it is implementation-defined. In any case, the multibyte encoding used by this function is specified by the currently active C locale.

### [edit] Parameters

s | - | pointer to narrow character array where the multibyte character will be stored
c32 | - | the 32-bit character to convert
ps | - | pointer to the conversion state object used when interpreting the multibyte string

### [edit] Return value

On success, returns the number of bytes (including any shift sequences) written to the character array whose first element is pointed to by `s`. This value may be ​0​, e.g. when processing the first char32_t in multi-char32_t-character sequence (does not occur in UTF-32).

On failure (if c32 is not a valid 32-bit character), returns -1, stores EILSEQ in errno, and leaves *ps in unspecified state.

### [edit] See also

mbrtoc32 (C++11) | generate the next 32-bit wide character from a narrow multibyte string (function) [edit]
do_out [virtual] | converts a string from internT to externT, such as when writing to file (virtual protected member function of `std::codecvt`) [edit]
C documentation for c32rtomb

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/string/multibyte/c32rtomb&oldid=63430"