std::mbsinit(3)

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 <cwchar>
 #include <iostream>
 #include <string>
 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 = "水"; // 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
   mbstate_t strings
             (class)
   C documentation for
   mbsinit