std::mbsinit (3) - Linux Manuals

std::mbsinit: std::mbsinit

NAME

std::mbsinit - std::mbsinit

Synopsis


Defined in header <cwchar>
int mbsinit( const std::mbstate_t* ps);


If ps is not a null pointer, the mbsinit function determines whether the pointed-to std::mbstate_t object describes the initial conversion state.

Notes


Although a zero-initialized std::mbstate_t always represents the initial conversion state, there may be other values of std::mbstate_t that also represent the initial conversion state.

Parameters


ps - pointer to the std::mbstate_t object to examine

Return value


0 if ps is not a null pointer and does not represent the initial conversion state, nonzero value otherwise.

Example


// Run this code


  #include <clocale>
  #include <string>
  #include <iostream>
  #include <cwchar>


  int main()
  {
      // allow mbrlen() to work with UTF-8 multibyte encoding
      std::setlocale(LC_ALL, "en_US.utf8");
      // UTF-8 narrow multibyte encoding
      std::string str = u8"水"; // or u8"\u6c34" or "\xe6\xb0\xb4"
      std::mbstate_t mb = std::mbstate_t();
      (void)std::mbrlen(&str[0], 1, &mb);
      if (!std::mbsinit(&mb)) {
          std::cout << "After processing the first 1 byte of " << str
                    << " the conversion state is not initial\n";
      }


      (void)std::mbrlen(&str[1], str.size()-1, &mb);
      if (std::mbsinit(&mb)) {
          std::cout << "After processing the remaining 2 bytes of " << str
                    << ", the conversion state is initial conversion state\n";
      }
  }

Output:


  After processing the first 1 byte of 水 the conversion state is not initial
  After processing the remaining 2 bytes of 水, the conversion state is initial conversion state

See also


          conversion state information necessary to iterate multibyte character strings
mbstate_t (class)