Open In App

mbsinit() Function in C/C++

Last Updated : 22 Jun, 2021
Improve
Improve
Like Article
Like
Save
Share
Report

The mbsinit() is an inbuilt function in C++ which is used to check whether ps(passed as a parameter to this function) points to a mbstate_t object that describes an initial conversion state. This function returns non-zero for any mbstate_t object representing an initial state, or if ps is a null pointer. 
The state pointed by ps can be set to the initial state by calling : 
 

// ps points now to a zero-valued object
memset (ps, 0, sizeof(*ps));

Syntax : 
 

int mbsinit( const mbstate_t* ps)

Parameter : The function accepts one parameter as described below: 
 

  • ps :Pointer to an mbstate_t object

Return Value : The function returns two value as follows: 
 

  • 0 if ps is not a null pointer and doesn’t represent the initial conversion state.
  • Nonzero if ps is a null pointer or represents the initial conversion state.

Below programs illustrate the above function: 
Program 1 : 
 

CPP




// C++ program to illustrate
// mbsinit() function
 
#include <bits/stdc++.h>
using namespace std;
 
// function to check if the object describes
// the initial conversion state
void checkfor(mbstate_t ps)
{
    // (mbstate_t) Type that holds the information necessary
    // to maintain the state when converting between
    // sequences of multibyte characters and
    // wide characters (either way).
 
    int func = mbsinit(&ps);
 
    if (func)
        cout<<"The conversion state is initial"
                                 <<" conversion state\n";
 
    else
        cout<<"The conversion state is not initial"
                                    <<" conversion state";
}
 
// Driver code
int main()
{
    setlocale(LC_ALL, "en_US.utf8");
 
    // initializing the string
    char str[] = "\u00df";
 
    // initial state
    mbstate_t ps = mbstate_t();
 
    // check if ps is liknked to
    // initial conversion state
    checkfor(ps);
 
    mbrlen(str, 1, &ps);
 
    // check if, after getting the
    // length of multibyte character
    checkfor(ps);
 
    return 0;
}


Output: 

The conversion state is initial conversion state
The conversion state is not initial conversion state

 

Program 2 : 
 

CPP




// C++ program to illustrate
// mbsinit() function
// with empty string
 
#include <bits/stdc++.h>
using namespace std;
 
// function to check if
// object describes the initial conversion state
void checkfor(mbstate_t ps)
{
    // (mbstate_t) Type that holds the information necessary
    // to maintain the state when converting between
    // sequences of multibyte characters and
    // wide characters (either way).
 
    int func = mbsinit(&ps);
 
    if (func)
        cout << "the conversion state is initial"
                                <<" conversion state\n";
 
    else
        cout << "the conversion state is not initial"
                                <<" conversion state";
}
 
// Driver code
int main()
{
    setlocale(LC_ALL, "en_US.utf8");
 
    // initializing the string
    char str[] = "";
 
    // initial state
    mbstate_t ps = mbstate_t();
 
    // check if ps is liknked to
    // initial conversion state
    cout << "After ps is initialized, ";
    checkfor(ps);
 
    mbrlen(str, 0, &ps);
 
    // check if, after getting the
    // length of multibyte character
    cout << "After performing some task, ";
    checkfor(ps);
 
    return 0;
}


Output: 

After ps is initialized, the conversion state is initial conversion state
After performing some task, the conversion state is initial conversion state

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads