при преобразованиях mb(s)rtowc(s) mbstate хранит недоразобранное начало mb-символа (и при повторном вызове начинает разбирать оставшуются часть символа).
при преобразовании wcsrtombs я предположил, что mbstate хранит недовыведенный (в выходную строку) конец mb-символа, но тест показал, что это не так (в gcc со стандартной комплектацией в cygwin'е).
а при wcrtomb вообще не понятно зачем он нужен, если wcrtomb не может выводить (в выходную строку) более MB_CUR_MAX байтов, т.е. более одного в общем случае символа.
собственно зачем?