Skip to content
Related Articles

Related Articles

Improve Article
Save Article
Like Article

c32rtomb() function in C/C++

  • Last Updated : 04 Sep, 2018

The c32rtomb() is a built-in function in C/C++ which converts 32 bit character representation to a narrow multibyte character representation. It is defined within the uchar.h header file of C++.

Syntax:

Take a step-up from those "Hello World" programs. Learn to implement data structures like Heap, Stacks, Linked List and many more! Check out our Data Structures in C course to start learning today.
size_t c32rtomb(char* s, char32_t c32, mbstate_t* p)

Parameters: The function accepts three mandatory parameters as shown below:

  • s: specifies the string where the multibyte character is to be stored.
  • c16: specifies the 32 bit character to convert.
  • p: specifies the pointer to an mbstate_t object used when interpreting the multibyte string.

Return Value: The function returns two values as shown below:



  • On success of the program, the function returns the number of bytes written to the character array pointed to by s.
  • If failed, then -1 is returned and EILSEQ is stored in err no.

Program 1:




// C++ program to illustrate the
// c32rtomb () function on it's success
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
  
int main()
{
    const char32_t str[] = U"GeeksforGeeks";
    char s[50];
    mbstate_t p{};
    size_t length;
    int j = 0;
  
    while (str[j]) {
        // initializing the function
        length = c32rtomb(s, str[j], &p);
        if ((length == 0) || (length > 50))
            break;
  
        for (int i = 0; i < length; ++i)
            cout << s[i];
        ++j;
    }
  
    return 0;
}
Output:
GeeksforGeeks

Program 2:




// C++ program to illustrate the
// c32rtomb () function on it's failure
#include <iostream>
#include <uchar.h>
#include <wchar.h>
using namespace std;
  
int main()
{
    const char32_t str[] = U"";
    char s[50];
    mbstate_t p{};
    size_t length;
    int j = 0;
  
    while (str[j]) {
        // initializing the function
        length = c32rtomb(s, str[j], &p);
        if ((length == 0) || (length > 50))
            break;
  
        for (int i = 0; i < length; ++i)
            cout << s[i];
        ++j;
    }
  
    return 0;
}
Output:

Note: There is no output in the above program since it is a case of failure.




My Personal Notes arrow_drop_up
Recommended Articles
Page :

Start Your Coding Journey Now!