##### cppreference.com

##### Search

Create account

##### Namespaces

- Page
- Discussion

##### Variants

##### Views

- View
- Edit
- History

##### Actions

# std::mbsinit

From cppreference.com
< cpp‎ | string‎ | multibyte

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.

### [edit] 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.

### [edit] Parameters

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

### [edit] Return value

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

### [edit] 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

### [edit] See also

mbstate_t | conversion state information necessary to iterate multibyte character strings (class) [edit]
C documentation for mbsinit

Retrieved from "http://en.cppreference.com/mwiki/index.php?title=cpp/string/multibyte/mbsinit&oldid=59060"