Función mbsinit() en C/C++

El mbsinit() es una función incorporada en C++ que se utiliza para verificar si ps (pasado como parámetro a esta función) apunta a un objeto mbstate_t que describe un estado de conversión inicial. Esta función devuelve un valor distinto de cero para cualquier objeto mbstate_t que represente un estado inicial, o si ps es un puntero nulo. 
El estado señalado por ps se puede establecer en el estado inicial llamando a: 
 

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

Sintaxis: 
 

int mbsinit( const mbstate_t* ps)

Parámetro: la función acepta un parámetro como se describe a continuación: 
 

  • ps: Puntero a un objeto mbstate_t

Valor devuelto: la función devuelve dos valores de la siguiente manera: 
 

  • 0 si ps no es un puntero nulo y no representa el estado de conversión inicial.
  • Distinto de cero si ps es un puntero nulo o representa el estado de conversión inicial.

Los siguientes programas ilustran la función anterior: 
Programa 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;
}
Producción: 

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

 

Programa 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;
}
Producción: 

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

 

Publicación traducida automáticamente

Artículo escrito por AmanSrivastava1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *